blog icon indicating copy to clipboard operation
blog copied to clipboard

怎样解决JS浮点数精度问题?

Open ly2011 opened this issue 7 years ago • 0 comments

前言

遵循 IEEE 754 标准的语言都会存在这个问题

怎样解决JS浮点数精度问题?

精度损失可能出现在进制转化和对阶运算过程中

1. 将数字转为整数


function add(num1, num2) {
 const num1Digits = (num1.toString().split('.')[1] || '').length;
 const num2Digits = (num2.toString().split('.')[1] || '').length;
 const baseNum = Math.pow(10, Math.max(num1Digits, num2Digits));
 return (num1 * baseNum + num2 * baseNum) / baseNum;
}

优点: 简单

缺陷: 对大数支持的不够好

2 .第三方库

  1. Math.js

  2. big.js

ly2011 avatar Dec 07 '18 03:12 ly2011