2013-05-01 179 views
-3
console.log((57/100) * 100); 

當我在Javascript中使用這個數學時,它總是返回56.99999999。爲什麼它不是57.00000?爲什麼這個計算不會返回一個整數?

+4

這不限於JavaScript,但一般浮點運算的精度問題,http://floating-point-gui.de /。 – Xotic750 2013-05-01 11:10:43

+0

按照這個http://stackoverflow.com/questions/588004/is-javascripts-floating-point-math-broken – Trikaldarshi 2013-05-01 12:52:53

回答

2

爲了得到一個確切的答案,您將需要使用整數,或使用一個小數庫。 Javascript中有一些十進制庫,它使用整數計算值,然後將值轉換回十進制。例如,有用於Javascript的BigNumber庫。

原因是(57/100)部分返回一個浮點數或Javascript中的浮點數。 JavaScript使用64-bit floating point numbers,在大多數系統上,它提供53位精度來表示尾數,或float的數值部分(3.2中的3.2)。大多數系統使用浮點標準,只要它在最後一個位置小於一個單位(對於IEEE-754 64位是第54位),就允許浮點運算出現任何錯誤。因此,所有花車都會被切斷,舍入和/或截斷,這就是爲什麼結果返回一個小數。

有關爲什麼發生這種情況的更多信息,你還可以看到:Is floating point math broken?

相關問題