Money type
IGotD-
nise at nise.com
Wed Jan 1 22:04:00 UTC 2020
On Wednesday, 1 January 2020 at 20:20:14 UTC, Ola Fosheim Grøstad
wrote:
> On Wednesday, 1 January 2020 at 19:01:36 UTC, Steven
> Schveighoffer wrote:
>> That is what I use. Fixed point with a factor of power of 10.
>> In other words, a fixed point number with 2 decimal places
>> would be sufficient for such currency. When doing math on such
>> types, you just need to deal with the underlying numbers, and
>> it works fine.
>
> You don't need fixed point, just store cents in 64 bit floating
> point and you get at least the same accuracy as a 53 bit
> integer fixed point.
Using floating point is not recommended. For some fractional
number it is actually impossible to store the value as a rational
binary number. For example 8.90 would be stored as 8.89999999999+
(in reality this is binary values so just think of my example in
an equivalent binary value case). This would lead to some
rounding errors, especially when chaining several operations.
You should go for a representation that always calculates the
currency exact, down to the cent or whatever it is. Not doing so
you might even be breaking the law for some appliances.
More information about the Digitalmars-d
mailing list