Number最大值:2的53次方 16位: 9007199254740992
测试案例:123456789 * 987654321
正确结果:121932631112635269
实际结果:121932631112635260
原因:计算结果超出Number最大值导致精准度出现偏差
/* 解决方法1:将数字包裹在引号内进行计算:*/
console.log('123456789' * '987654321') //121932631112635260
/* 仍有偏差 */
/* 解决方法2:使用BigInt方法进行计算 */
console.log(BigInt(123456789 * 987654321)) ==> 121932631112635264n
/* 偏差较小,但仍不准确 */
/* 解决方法3:在已知数字后加n进行计算 */
console.log(BigInt(123456789n * 987654321n)) ==> 121932631112635269n
/* 结果精准,但只可在一直数值计算时可用 */
解决方法4:使用js库
计算大数值:https://www.npmjs.com/package/jsbn