Jquery显示$ 20.099999999999998而不是$ 20.1

时间:2009-11-19 06:47:48

标签: javascript jquery floating-accuracy

这是Jquery代码:

  function Totalprice()
{
    var unitprice=$('#unitpay').val();
    var quota=$('#readers').val();
    var totalprice=unitprice*quota;
    $('#totalprice').text('$'+totalprice);

}

当读者的价值为67且unitpay为0.3时,它计算总价并显示$ 20.099999999999998,而不是$ 20.1。怎么了?如果我希望它显示$ 20.1而不是$ 20.099999999999998,我该如何重写代码?

4 个答案:

答案 0 :(得分:6)

这个怎么样:

$('#totalprice').text('$'+totalprice.toFixed(1));

或:

$('#totalprice').text('$'+totalprice.toFixed(2));

将其显示为实际的美元金额。

答案 1 :(得分:5)

正如你热心的评论员指出的那样,这是一个floating point error。快速简便的解决方案是使用像toFixed()这样的舍入方法。

答案 2 :(得分:3)

只需使用.toFixed(2)即可。 (link)

问题在于计算机无法准确表示某些数字(它们是有限的,并且以二进制形式运行),所以这样的事情会发生。

答案 3 :(得分:0)

Javascript有一些非常严重的浮点问题。尝试在Firebug控制台中输入0.1 + 0.2,以获得一些乐趣。

这不是jQuery的问题。如上所述,使用toFixed()。