1. 程式人生 > >javascript小數乘法溢位、精確率問題 toFixed(2)完美解決

javascript小數乘法溢位、精確率問題 toFixed(2)完美解決

做前端頁面開發的經常會遇到數值的乘法計算,帶小數位計算會出現值溢位的問題,如:

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