2014-10-16 71 views

回答

0

因爲浮點以二進制表示,而不是十進制。一些十進制數字不會精確表示。不幸的是,由於Javascript只有一個Number類,所以它不是一個很好的工具。其他語言有精心設計的十進制庫,以避免這種錯誤。您將不得不接受1美分的錯誤,實施服務器端的解決方案,或者努力解決這個問題。

參見:

JavaScript floating point number problem

Binary representation of floating point number php/java (Server side)

+0

您能否以浮點格式向我提供此1.3的二進制表示形式。也許不是像JavaScript一樣,但也許在某種程度上,某些編程語言可以這樣做,以便我可以看到在二進制表示中出現此問題的位置。 – 2014-10-16 15:46:01

+0

請參閱:[如何獲取二進制表示的浮點數](http://stackoverflow.com/questions/4729526/how-to-get-binary-representation-of-floatingpoint -number-in-php) – 2014-10-16 17:38:03

+0

但是這個線程與php和java代碼有關。 – 2014-10-16 17:44:00

0

因爲javascript中的浮動(讀取:雙打)不是很準確,您可以將數字四捨五入以使用更少的小數來隱藏問題。一個非常黑客的做法是這樣做:

var num = 1.3*1.3; 
Math.round(num * 100)/100; 
相關問題