2009-11-19 19 views
1

這是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,我該如何重寫代碼?

+3

浮點錯誤!嗚! – jtbandes 2009-11-19 06:48:41

+5

它壞了!最後是晚上! – leppie 2009-11-19 06:49:03

+0

如果是加油站,顯示屏會是20.1999999999999 ;-) – mjv 2009-11-19 07:22:52

回答

6

如何:

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

或:

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

將其顯示爲實際金額。

+0

太棒了!大!大! – Steven 2009-11-19 06:54:52

3

只需使用.toFixed(2)(link)

問題是計算機無法準確地表示某些數字(它們是有限的,並且以二進制形式運行),因此會發生類似的情況。

5

正如你的熱心評論員指出的那樣,這是一個floating point error。快速簡便的解決方案是使用toFixed()之類的舍入方法。

0

JavaScript有一些非常嚴重的浮點問題。嘗試在Firebug控制檯中輸入0.1 + 0.2以獲得一些樂趣。

這不是jQuery的問題。如上所述,使用toFixed()。