**:
大多數語言在處理浮點數的時候都會遇到精度問題,但是在js裡似乎特別嚴重,來看乙個例子
alert(45.6*13);
結果居然是592.800000000001,當然加法之類的也會有這個問題
那這是js的錯誤嗎?
當然不是,你的電腦做著正確的二進位制浮點運算,但問題是你輸入的是十進位制的數,電腦以二進位制運算,這兩者並不是總是轉化那麼好的,有時候會得到正確的結果,但有時候就不那麼幸運了
alert(0.7+0.1);//輸出0.7999999999999999
alert(0.6+0.2);//輸出0.8
你輸入兩個十進位制數,轉化為二進位制運算過後再轉化回來,在轉化過程中自然會有損失了
但一般的損失往往在乘除運算中比較多,而js在簡單的加減法裡也會出現這類問題,你也看到了,這個誤差也是非常小的,但是卻是不該出現的
那該怎麼解決呢,ecma4似乎給了解決方法,但是現在倒不是那麼實用的
一種方法,比如0.7+0.1,先把0.1和0.7都乘10,加完之後再除10
另外可以自己寫點函式來解
js浮點數精度問題 js計算中遇到的坑
大多數語言在處理浮點數的時候都會遇到精度問題,但是在js裡似乎特別嚴重,來看乙個例子 alert 45.6 13 結果居然是592.800000000001,當然加法之類的也會有這個問題 那這是js的錯誤嗎?當然不是,你的電腦做著正確的二進位制浮點運算,但問題是你輸入的是十進位制的數,電腦以二進位制...
JS之浮點數精度丟失問題
js中,在進行浮點數計算的時候,會出現精度丟失的問題,如下 alert 0.1 0.2 alert 0.3 0.2 alert 0.1 0.2 alert 0.3 0.2 正常情況,得出的結果應該是0.3,0.1,0.02,1.5,但是實際得出的結果卻不是這樣,如下 可以看到,得出的結果並不是我們預...
js高精度浮點數運算
貼 自定義高精度浮點數運算 物件格式寫法 var float calculator catch e m math.pow 10,math.max r1,r2 計算因子 return arg1 m arg2 m m minus function arg1,arg2 mul function arg1,...