So I am making a script that adds two numbers (decimal numbers) together, which I have encountered a problem.
http://jsfiddle.net/DerekL/esqnC/
I made the script, it turns out pretty good:
0.1 + 0.5 //0.6
0.2 + 0.3 //0.5
But soon I see:
0.1 + 0.2 //0.30000000000000004
0.01 + 0.06 //0.06999999999999999
And it does not look right to me. I know it is a shortcoming of using float point with finite bits, but I can't find a way to fix that.
Math.ceil //No
Math.floor //No
.slice //No
UPDATE
Is it possible to multiply the numbers by 1000 first, then add them then divide it by 1000?
This question is related to
javascript
numbers
Use toFixed
to convert it to a string with some decimal places shaved off, and then convert it back to a number.
+(0.1 + 0.2).toFixed(12) // 0.3
It looks like IE's toFixed
has some weird behavior, so if you need to support IE something like this might be better:
Math.round((0.1 + 0.2) * 1e12) / 1e12