前端如何应对精确数字运算?
JavaScript 的 Number 类型基于 IEEE 754 标准(双精度浮点数),在处理大数或高精度计算时存在天然局限。比如 0.1 + 0.2 的结果往往不是预期的 0.3,而是 0.30000000000000004。对于金融、电商等对精度敏感的场景,这种误差是不可接受的。
BigNumber.js 正是为了解决这个问题而生的库。它内部使用字符串模拟十进制运算,完全规避了二进制浮点误差,支持任意精度且默认不丢失数据。
安装与配置
引入方式
推荐使用 npm 安装:
npm install bignumber.js
在代码中引入:
const BigNumber = require('bignumber.js'); // CommonJS
// 或者 ES6 模块语法
import BigNumber from 'bignumber.js';
如果不想依赖包管理器,也可以直接通过 CDN 引入:
<script src="https://cdn.jsdelivr.net/npm/bignumber.js/bignumber.min.js"></script>
<script>
const num = new BigNumber('123456789.123456789');
console.log(num.toString());
</script>
全局配置
BigNumber.js 允许设置默认精度和舍入模式,这些配置对所有实例生效。
BigNumber.config({
DECIMAL_PLACES: 10, // 小数点后保留位数
ROUNDING_MODE: BigNumber.ROUND_HALF_UP,
: [-, ]
});


