On Sun, 19 Feb 2006, Richard Jones wrote:
>
> Before we go too far down the currency track (where I agree, using
> integers is the way to go), my actual requirement is for a natural
> OCaml mapping for the PostgreSQL NUMERIC/DECIMAL type:
>
> http://www.postgresql.org/docs/current/interactive/datatype.html#DATATYPE-NUMERIC-DECIMAL
>
> The database can define types like NUMERIC(6,4) which means 6 decimal
> digits in total, 4 of them after the decimal point -- for example,
> 12.3456
Hmm. There are problems definin that library. What are the semantics?
If I add a NUMERIC(6,4) (2 digits to the left of the point and 4 to the
righ) and a NUMERIC(7,2) (5 digits to the left of the point and 2 to the
right), what precision is the result? NUMERIC(4,2) (2 digits to the left
of the point and 2 to the right)? NUMERIC(9,4) (5 digits to the left of
the point and 4 digits to the right)? How does roundoff work? If I take
the NUMERIC(6,4) number 62.0000 and multiply it by the NUMERIC(6,4) number
02.0000, what answer do I get? The NUMERIC(6,4) number 24.000? The
NUMERIC(7,4) number 124.000? Or does it throw an exception?
>
> There doesn't seem to me to be a good natural map for this type in the
> stdlib.
If decimal roundoff isn't important, I'd be tempted to go for floats. I
don't know if this is true or not.
Brian