前端精确数字运算:BigNumber.js 实战与原理
JavaScript 的 Number 类型基于 IEEE 754 标准(双精度浮点数),有效数字限制为 53 位。在处理大数或高精度计算时,容易出现精度丢失。BigNumber.js 是一个专注于十进制精度运算的库,内部使用字符串模拟十进制,完全避免了二进制浮点误差。
为什么需要它?
原生 JavaScript 在以下场景容易出错:
- 小数运算:
0.1 + 0.2结果不是0.3。 - 大数比较: 超过
2^53 - 1的数字会丢失精度。 - 金融/区块链: 涉及金额、加密货币交易必须精确。
// 精度计算问题
console.log(0.1 + 0.2); // 0.30000000000000004
// 大数比较问题
console.log(15615616981519815 === 15615616981519816); // true (错误)
安装与配置
引入方式
推荐使用 npm 安装:
npm install bignumber.js
代码中引入:
const BigNumber = require('bignumber.js');
// 或者 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');
.(num.());


