myesn

myEsn2E9

hi
github

JavaScript 小數計算精度丟失解決方案

原因#

JavaScript 為什麼會出現精度問題

解決方案#

推薦使用第三方庫如 bignumber.jsdecimal.jsmath.js 來解決 JavaScript 的精度問題。這些庫通過重新實現計算邏輯來避免浮點數精度丟失。

  • bignumber.jsdecimal.js 是較為流行的選擇,它們都提供了任意精度的十進制數值計算功能。
  • math.js 則是一個更加全面的數學庫,除了解決精度問題外,還支持符號計算、矩陣運算等更多功能。

本文代碼示例使用 bignumber.js 來實現基本的算術:

// 加法
const accAdd = (arg1, arg2) => {
  return new BigNumber(arg1 ?? 0)
    .plus(new BigNumber(arg2 ?? 0)).toNumber();
}

// 減法
const accSub = (arg1, arg2) => {
  return new BigNumber(arg1 ?? 0)
    .minus(new BigNumber(arg2 ?? 0)).toNumber();
}

// 乘法
const accMul = (arg1, arg2) => {
  return new BigNumber(arg1 ?? 0)
    .times(new BigNumber(arg2 ?? 0)).toNumber();
}

// 除法 
// arg1 被除數; arg2 除數。
// 公式:被除數 / 除數 = 商
const accDiv = (arg1, arg2) => {
  if(args2 === 0) {
    throw new Error('除數不能為 0');
  }
  
  return new BigNumber(arg1 ?? 0)
    .div(new BigNumber(arg2)).toNumber();    
}

參考#

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。