2015-05-27 53 views
0

考慮下面的計算一個斯特朗數學計算

3 * 20.9 

通常它等於62.7。但是,當我用javascript計算它時,輸出是62.699999999999996。還有什麼我發現711也會產生錯誤的答案。爲什麼會出現問題以及如何使其正確?我認爲這是關於二進制文件?

demo

+0

這是由於浮點精度。 http://stackoverflow.com/questions/1458633/how-to-deal-with-floating-point-number-precision-in-javascript –

+0

重複的問題:[浮點數學是否壞了?](http:// stackoverflow。 com/questions/588004/is-floating-point-math-broken) – Roberto

+0

由於0.9不能映射到有限的二進制浮點數,所以發生不精確。如果這對您造成問題,您可以使用BigDecimal等庫:https://github.com/dtrebbien/BigDecimal.js/ – Jaco

回答

0

只保留1位小數。使用

(3*20.9).toFixed(1) 

更新Fiddle

0

試試這個:

Number((3*20.9).toFixed(1));