减去数字的Javascript不准确 - 为什么

时间:2013-09-27 08:26:57

标签: javascript jquery

我在这里有一个小提琴:http://jsfiddle.net/94wQJ/1/ - 但可能有人可以通过以下方式提出建议。

<button type="button" id="allocate">Calc</button>

 $('#allocate').click(function () {
     val1 = 25.00;
     val2 = 16.37;
     val3 = val1-val2;
     alert(val3);
 });

25 - 16.37 = 8.63 - 但是,val3的警报= 8.62999999999

为什么不准确?

谢谢,

标记

4 个答案:

答案 0 :(得分:5)

尝试使用toFixed更多information here

val3.toFixed(2)

演示Fiddle

答案 1 :(得分:3)

  

为什么不准确?

这是Is floating point math broken?的副本,但要回答您的具体问题:浮点数通常会将数字存储在基数2中,因为它允许比使用基数10更准确地存储更多数字,但代价是不存在能够准确存储所有基数为10的数字,即使是少量的小数位。

答案 2 :(得分:1)

许多小数部分不能完全用二进制表示。

使用.toFixed(2)

答案 3 :(得分:1)

请检查

val3 = Math.round(val3 * 100)/ 100;

I have update here http://jsfiddle.net/94wQJ/7/