Re: gmpy adapter - Mailing list psycopg

From Daniel Popowich
Subject Re: gmpy adapter
Date
Msg-id 19821.9952.90507.737360@io.astro.umass.edu
Whole thread Raw
In response to Re: gmpy adapter  (Daniele Varrazzo <daniele.varrazzo@gmail.com>)
List 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 by date:

Previous
From: Daniele Varrazzo
Date:
Subject: Re: gmpy adapter
Next
From: Daniel Popowich
Date:
Subject: Re: gmpy adapter