用 js 计算带小数的加减法时遇到计算精度丢失,导致产生了无限小数。
这种情况常见地令人吃惊,随便用小数进行加减乘除都会出现这种问题:
对基本四则运算的理解在现代计算机面前受到了挑战。
产生浮点数计算精度不准确的原因:
解决:
let num = ((0.1* 10 + 0.2 * 10) / 10).toFixed(1)
整数运算不可超过 MAX_SAFE_INTEGER (js 能精准表示的最大整数 Math.pow(2, 53),十进制即 9007199254740992)
number-precision 这个库就是使用的这种方案
如果整数运算会超过 MAX_SAFE_INTEGER,则
使用以下库进行大整数运算
bignumber.js
decimal.js
big.js
2021-12-01