Money type

Basile B. b2.temp at gmx.com
Thu Jan 2 13:58:17 UTC 2020


On Wednesday, 1 January 2020 at 22:26:30 UTC, Ola Fosheim Grøstad 
wrote:
> 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 
>> operations.
>
> 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).

Yyou're all silly guys. Don't use floating point for currency, 
just make a Currency fixed point custom type.


More information about the Digitalmars-d mailing list