Javascript Jquery显示$20.0999999998,而不是$20.1

Javascript Jquery显示$20.0999999998,而不是$20.1,javascript,jquery,floating-accuracy,Javascript,Jquery,Floating Accuracy,这是Jquery代码: function Totalprice() { var unitprice=$('#unitpay').val(); var quota=$('#readers').val(); var totalprice=unitprice*quota; $('#totalprice').text('$'+totalprice); } 当readers的值为67且unitpay为0.3时,它计算总价并显示$20.0999999998,而不是$2

这是Jquery代码:

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

}
当readers的值为67且unitpay为0.3时,它计算总价并显示$20.0999999998,而不是$20.1。发生了什么?如果我想让它显示$20.1而不是$20.09999999998,我该如何重写代码?

这样如何:

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

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

这个怎么样:

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

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

只需使用
.toFixed(2)

问题是计算机不能准确地表示某些数字(它们是有限的,并且以二进制形式运行),所以类似的事情就会发生。

只需使用
.toFixed(2)


问题是,计算机不能准确地表示某些数字(它们是有限的,并且以二进制形式运行),所以类似的事情就会发生。

正如你热情的评论员所指出的,这是一个错误。快速而简单的解决方法是使用toFixed()之类的舍入方法。

正如您热情的评论员所指出的,这是一个简单的方法。快速简单的解决方案是使用toFixed()之类的舍入方法。

Javascript有一些非常严重的浮点问题。找个时间在Firebug控制台中键入0.1+0.2以获得一些乐趣


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

Javascript有一些非常严重的浮点问题。找个时间在Firebug控制台中键入0.1+0.2以获得一些乐趣


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

它已损坏!!!末日快到了!!如果是加油站,则显示为20.1999999999;-)当然,这与jQuery无关。这是一个javascript/浮点问题。这是一个浮点问题,与javascript无关。1/10不能用固定数量的二进制数字表示,同样,1/3也不能用固定数量的十进制数字表示。它被破坏了!!!末日快到了!!如果是加油站,则显示为20.1999999999;-)当然,这与jQuery无关。这是一个javascript/浮点问题。这是一个浮点问题,与javascript无关。1/10不能用固定数量的二进制数字表示,同样,1/3也不能用固定数量的十进制数字表示。