Ola Fosheim Grøstad
ola.fosheim.grostad at gmail.com
Wed Jan 1 22:26:30 UTC 2020
On Wednesday, 1 January 2020 at 22:04:00 UTC, IGotD- wrote:
> 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
No, not if you store as cents. You get the exact same values as
with 53 bits integers with IEEE754.
You have to pay atttentition to rounding mode, even-odd is common.
> 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.
Double will do that fine. As I said, same as integer. If you
need half-cents, just multiply with 200 instead of 100. Or you
could use millis (multiply by 1000).
More information about the Digitalmars-d