最近做專案的時候遇到乙個比較糾結的js浮點計算問題。
當時是做利率計算,因為利率大多數涉及到小數點,精度要求也很高。
0.6+0.1+0.1=?
結果出現:0.7999999999999
網上查詢了一下,這確實是乙個缺陷(bug)
不僅加,只要涉及到浮點計算減成除一樣會出現類似情況
先看看demo:
將0.1~10,加0.1+0.1 進行測試
1 $(function執行結果:() 7
alert(content);
8 });
解決方法:
根據tofixed方法,我們修改一下,修改乙個toround方法,可對小數點精準四捨五入:
1 number.prototype.toround = function改一下demo中的方法,呼叫toround方法:(d)2
)?)\\d*$").test(s))
6 else
break
;}12
}13 s=a.join("").replace(new regexp("(\\d+)(\\d)\\d$"),"$1.$2");
14 }if(b)s=s.substr(1);return (pm+s).replace(/\.$/, "");} return
this+"";
15 };
var result = (i+0.1+0.1).toround(2);結果:
js浮點乘除bug
在做專案的時候涉及到百分數小數的顯示轉化,對小數進行乘除發現出不精確的問題,比如 a 0.69,c a 10,得到的確是6.8999999999999995,這是乙個js浮點數運算bug,於是找到了乘除的解決辦法,如下 function floatmul arg1,arg2 catch e try ...
js浮點數的計算
js在計算浮點數時可能不夠準確,會產生捨入誤差的問題,這是使用基於ieee745數值的浮點計算的通病,並非ecmascript一家,其他使用相同數值格式的語言也存在這個問題。這裡講一下js浮點數加 減 乘 除的正確做法。整數的乘法運算是準確的,這裡我們將浮點數的乘法運算轉化為整數乘法,然後除以10的...
js浮點數精度問題 js計算中遇到的坑
大多數語言在處理浮點數的時候都會遇到精度問題,但是在js裡似乎特別嚴重,來看乙個例子 alert 45.6 13 結果居然是592.800000000001,當然加法之類的也會有這個問題 那這是js的錯誤嗎?當然不是,你的電腦做著正確的二進位制浮點運算,但問題是你輸入的是十進位制的數,電腦以二進位制...