You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中计算超过15位的大十进制数?

JavaScript十进制计算的精度坑与解决办法

嘿,这绝对是JavaScript开发者刚上手时都会懵一下的问题!毕竟谁第一次看到0.1 + 0.2不等于0.3都会疑惑对吧?

问题根源

JavaScript用双精度浮点数存储所有数值,这就导致一些十进制小数无法被精确表示——比如0.1和0.2在二进制里都是无限循环的,相加后自然就出现了精度偏差:

console.log(0.1 + 0.2) // 输出:0.30000000000000004

解决方案:用bignumber.js处理

这类精度问题不用自己造轮子,用成熟的数值处理库就能搞定,我平时常用的是bignumber.js,它专门针对十进制数值运算做了优化,能给出我们预期的结果:

console.log(Number(new BigNumber(0.1).plus(0.2))); // 输出:0.3

你可以通过npm安装它(npm install bignumber.js),或者下载库文件本地引入,就能使用它的一系列精准运算API了。

注意bignumber.js的局限性

不过它也不是万能的,bignumber.js接受的参数类型只有字符串、数字或者BigNumber实例。如果传入其他类型(比如无法转换为有效数值的字符串、复杂对象),很可能会返回NaN或者抛出错误,使用时一定要注意参数的合法性哦。

内容的提问来源于stack exchange,提问作者P.S.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:17:13