js做小數運算精度問題

2022-04-21 20:05:51 字數 1178 閱讀 8099

當js做小數運算時存在bug,大概是因為二進位制和十進位制轉換之間的關係。

bug如圖

解決方案

1.加減法可以用引數乘以1000再用結果除以1000。

乘除法可以用引數分別*100進行計算後在除以10000

2.使用tofixed()方法,效率貌似沒有第一種高,這裡返回的值一定有兩位小數,要麼後台用double接收,要麼用parseint()轉換為整數parseint((35.23*100).tofixed(2))。

3.自己寫演算法函式(此種寫法資料過大依然會有問題,不推薦)。

function

accdiv(arg1, arg2)

catch

(e) {}

try

catch

(e) {}

with

(math) }/*

給number型別增加乙個方法,呼叫起來更加方便。

*/number.prototype.div = function

(arg)

function

accmul(arg1, arg2)

catch

(e) {}

try

catch

(e) {}

return number(s1.replace(".", "")) * number(s2.replace(".", "")) / math.pow(10, m);

}number.prototype.mul = function

(arg)

function

accadd(arg1, arg2)

catch

(e)

try

catch

(e)

m = math.pow(10, math.max(r1, r2));

return (arg1 * m + arg2 * m) /m;

}number.prototype.add = function

(arg)

js計算小數精度問題

js進行部分小數運算時,會出現精度問題。解決思路是,把小數同時擴大為10的x冪,返回計算完畢後,再縮小為10的x冪。在math方法上新增加減乘除方法。let extentfns add sub mul div 運算函式 function ufunc type,arg catch e decimald...

js運算精度問題

原理是,將浮點數乘以 擴大 10的n次方倍,把浮點數變為整數後再進行相應的運算,最後將得到的結果除以 縮小 10的n次方倍。原理示例 將 console.log 1 0.8 變為 console.log 1 10 0.8 10 10 即可得到正確的值 根據上述原理,可以封裝一些方法出來解決此類問題。...

js運算精度問題

原理是,將浮點數乘以 擴大 10的n次方倍,把浮點數變為整數後再進行相應的運算,最後將得到的結果除以 縮小 10的n次方倍。原理示例 將 console.log 1 0.8 變為 console.log 1 10 0.8 10 10 即可得到正確的值 根據上述原理,可以封裝一些方法出來解決此類問題。...