5 ms·
> Floats: 0.1 + 0.2 // returns 0.30000000000000004 The question is how much of an issue is this really? How often is 4 parts in 10 quadrillion a meaningful err
by rtkwe 8y ago
> Floats: 0.1 + 0.2 // returns 0.30000000000000004
The question is how much of an issue is this really? How often is 4 parts in 10 quadrillion a meaningful error when dealing with money? Especially when most of the time JS is dealing with money it will be presentation.
- jczhang 8y agoYeah seriously. You'll have some front-end lib func converting that to 2 significant digits right of the decimal anyway. Weak argument imo haha.
- deleted 8y ago[deleted]
- john_of_peaches 8y agoBecause value !== 0.3 and that can cause unexpected problems on the edges (which are the worst kind of issues).
- codr4 8y agoI'm far from wizard on the topic, but from my experience it's not that simple since the relative magnitudes of the operands and the operator affect the size of the error in non obvious ways. I spent 13 years maintaining a 2mloc reservation and accounting system that used floats for everything. By the time I got there and understood enough it was simply too late to do anything about it. Just say no, really; that road leads to madness. If you need precision; and many do; consider fixnums, rationals or bignums, in order of increasing complexity and flexibility.
- ouro 8y agoI might suggest reading https://doc.lagout.org/science/0_Computer%20Science/3_Theory/Handbook%20of%20Floating%20Point%20Arithmetic.pdf https://doc.lagout.org/science/0_Computer%20Science/3_Theory... This is in general how floating point math works.
- mikeash 8y agoI ran into this once because a price was slightly too low, and got truncated. A $19.99 item got displayed as $19.98. You can work around this by rounding everywhere but that’s error-prone.
- partycoder 8y agoHow much of an issue is it? The kind of issue do not want to have: issues with money that can go very wrong when calculating discounts, tax percentages, interest or whatever.
- jfoutz 8y agoThis is actually the plot of a few movies, people have been convicted of it in real life. [1] [1] https://en.wikipedia.org/wiki/Salami_slicing https://en.wikipedia.org/wiki/Salami_slicing
- village-idiot 8y agoAfter doing a lot of calculations? This is a big problem. The firm I worked at used built in Java libraries and always deferred rounding until the very last possible moment.