javascript小數乘法溢位、精確率問題 toFixed(2)完美解決
阿新 • • 發佈:2019-01-22
做前端頁面開發的經常會遇到數值的乘法計算,帶小數位計算會出現值溢位的問題,如:
JS裡做小數的乘法運算時會出現浮點錯誤,具體可以測試一下: <script>alert(11*22.9)</script>
結果是251.89999999999998 而不是251.9 這個問題想必有很多人為之頭痛。那麼如何解決呢?
網上那些經常轉載來,轉載去的解決方式,其實都存在弊端,先看看網上那種弊端的解決方式吧。
1、<script>alert(11*(22.9*10)/10);</script> 解決問題的大概思路就是,先把因數放大為整數,最後再除以相應的倍數,這樣就能得到正確的結果了。
其實這種方式不完全正確,雖說可以解決一部分小數的乘法問題,但是還是有特例的,比如按照這種解決思路的話,小數點後面有幾位小數必須擴大10的多少次方倍,如果這個值是個動態的,豈不是顯得很繁瑣。
下面給出萬能解決方式。
<script> alert(parseFloat(10000.005*10000).toFixed(2));
//結果是10000005.00
</script>
此處藉助toFixed()方法來四捨五入保留小數位。
只要乘數足夠大,皆能解決!http://www.tc5u.com