2013-08-21 37 views
-1

我正在做一個項目,我注意到一些奇怪的值。我做了一些測試與各種輸入值,並結束了這一點 - 是什麼在我看來 - 怪異的行爲:1 + 0.72 = 1.72,但2 + 0.72 = 2.7199999999999998爲什麼?

1 + 0.72 = 1.72 // expecting 1.72 
2 + 0.72 = 2.7199999999999998 // 2.72 
1 + 1.72 = 2.7199999999999998 // 2.72 
1 + 2.72 = 3.72 // 3.72 
1 + 3.72 = 4.720000000000001 // 4.72 

有沒有人對發生了什麼事情,以及如何防止這種情況的線索,那就是,我該怎麼辦確保我得到我期待的?

+0

歡迎浮點數學! –

+1

這不僅僅是javascript。 –

+1

作爲一個自我回答的問題,這有點欠缺。我希望更多的努力使答案成爲規範(並首先檢查模糊) –

回答

0

一種方法來解決它會是這樣的:

parseFloat(val.toFixed(2)) 
+1

另一種方法是'var result = Math.round(val * 100)/ 100',它不會轉換爲字符串並返回浮動狀態。不知道它是否更有效。 –

+0

@btoueg如果您願意將您的建議發佈爲答案,我會很樂意將其標記爲「答案」,因爲它顯然更優雅。 – Alexei

相關問題