Version française
Home     About     Download     Resources     Contact us    
Browse thread
What library to use for arbitrary precision decimals
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Brian Hurt <bhurt@s...>
Subject: Re: [Caml-list] What library to use for arbitrary precision decimals


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