Re: gmpy adapter
От | Daniel Popowich |
---|---|
Тема | Re: gmpy adapter |
Дата | |
Msg-id | 19821.9952.90507.737360@io.astro.umass.edu обсуждение исходный текст |
Ответ на | Re: gmpy adapter (Daniele Varrazzo <daniele.varrazzo@gmail.com>) |
Список | psycopg |
Daniele Varrazzo writes: > On Mon, Feb 28, 2011 at 11:07 PM, Daniele Varrazzo > <daniele.varrazzo@gmail.com> wrote: > > > Also notice that float64 has 53 bits of precision, 15 full decimal > > digits. If you don't need more precision when you write data in the > > database (even if you have used more during calculations) you may just > > use the repr(float()) of your mpq to write into the database. > > Or else, in the adapter you may use mpf to approximate the rational to > the precision you need. > > >>> gmpy.mpq(2,3) > mpq(2,3) > >>> gmpy.mpf(_, 100) > mpf('6.666666666666666666666666666666666666667e-1',100) > >>> str(_) > '0.6666666666666666666666666666666666666667' Daniele, Thanks for the ideas. One thing I didn't specify in my original post is that the numeric columnss in my database are for monetary values, so I can't use binary floating point representations in my python code, else I risk inexactness and accumulated error in long computations. I need to use decimal floating point, e.g., decimal.Decimal (or cdecimal for a C implementation) or a rational object, like fractions.Fraction (or gmpy.mpq for a C impl). I could use mpq for internal computations then use mpf for the final conversion to the string I need for my adapter, but I want a single type I can use throughout my code without such concerns. I'm going to try cdecimal for now. Thanks, again! Cheers, Dan
В списке psycopg по дате отправления: