Browse thread
What library to use for arbitrary precision decimals
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ 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