js的浮點運算存在精度問題
原因:js對于number類型的數使用的是IEEE754標準中的雙精度數存儲,總共64位,其中:1位符號位,11位指數位以及52位小數位;表示小數時,超出小數精度的要進行"零舍一入"操作,因此,對小數相加,實際也要對結果進行零舍一入操作,導致精度問題
首先進行大數計算配置:
window.math.config({
number: 'BigNumber', // Default type of number:
// 'number' (default), 'BigNumber', or 'Fraction'
precision: 64 // Number of significant digits for BigNumbers
});
調用方式:
function calculate(str) {
return parseFloat(math.format(math.eval(str)));
}
注意:必須使用math.format()進行轉換