[javascript] JavaScript adding decimal numbers issue

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

The answer is


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

Similar questions with javascript tag:

Similar questions with numbers tag: