"be consistent" | |
PerlMonks |
Re^5: Integers sometimes turn into Reals after substraction (printed accuracy and float subtraction)by LanX (Saint) |
on May 14, 2016 at 13:42 UTC ( [id://1163031]=note: print w/replies, xml ) | Need Help?? |
don't know much about perlguts, but > If the math never used anything but all integer values, then this output precision issue doesn't appear? Yes! (well you could still knock at integer limits and need to resort to bigint, but that's another problem) This phenomenon already caused much sorrow in financial calculations where cents where inaccurate, and fiscal authorities can be very nasty (or nazi) about inaccurate cents. The rule of thumb is, if you want n decimal points accuracy, do a n points left shift before starting and an n point right shift of the results. Roughly speaking: If you need accurate cents, calculate in cents and only convert the result into dollars. (I'd do 1/100th cents to be sure) Like this all relevant problems between decimal and binary calculations will stay beyond error margin. Nota Bene: This won't solve the problem of error propagation if you are doing loads of calculations, but financial businesses normally define explicit rounding rules to normalize this.
Cheers Rolf
In Section
Seekers of Perl Wisdom
|
|