js中BigNumber的使用详解
作者:胡歌1
JavaScript中使用BigNumber.js库进行大整数和高精度小数运算,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
1. 安装 bignumber.js
(1) 使用 npm 安装
npm install bignumber.js
(2) 在浏览器中使用
<script src="https://cdn.jsdelivr.net/npm/bignumber.js@9.0.2/bignumber.min.js"></script>
2. 基本用法
(1) 创建 BigNumber 对象
const BigNumber = require('bignumber.js');
// 从字符串创建
const num1 = new BigNumber('123456789012345678901234567890');
// 从数字创建
const num2 = new BigNumber(12345);
// 从科学计数法创建
const num3 = new BigNumber('1.23e+18');(2) 基本运算
BigNumber 支持加、减、乘、除等基本运算:
const a = new BigNumber('12345678901234567890');
const b = new BigNumber('98765432109876543210');
// 加法
const sum = a.plus(b); // 111111111011111111100
// 减法
const diff = a.minus(b); // -86419753208641975320
// 乘法
const product = a.times(b); // 1219326311370217952237463801111263526900
// 除法
const quotient = a.dividedBy(b); // 0.12499999886093750001(3) 比较大小
const x = new BigNumber('12345678901234567890');
const y = new BigNumber('98765432109876543210');
// 是否相等
console.log(x.isEqualTo(y)); // false
// 是否大于
console.log(x.isGreaterThan(y)); // false
// 是否小于
console.log(x.isLessThan(y)); // true(4) 取整和取模
const num = new BigNumber('123.456');
// 取整
const integerPart = num.integerValue(); // 123
// 四舍五入
const rounded = num.round(); // 123
// 取模
const remainder = num.modulo(10); // 3.456(5) 格式化输出
const num = new BigNumber('1234567890.123456789');
// 转换为字符串
console.log(num.toString()); // "1234567890.123456789"
// 保留小数位数
console.log(num.toFixed(4)); // "1234567890.1235"
// 科学计数法
console.log(num.toExponential(4)); // "1.2346e+9"3. 高级用法
(1) 链式调用
BigNumber 支持链式调用:
const result = new BigNumber('1234567890')
.plus('9876543210')
.times('2')
.dividedBy('3')
.toFixed(2);
console.log(result); // "7407407400.00"(2) 处理精度
BigNumber 可以设置全局精度:
// 设置全局精度为 10 位小数
BigNumber.set({ DECIMAL_PLACES: 10 });
const num = new BigNumber('1').dividedBy('3');
console.log(num.toString()); // "0.3333333333"(3) 处理大整数
BigNumber 可以处理超出 JavaScript 安全整数范围的大整数:
const bigInt = new BigNumber('123456789012345678901234567890');
console.log(bigInt.toString()); // "123456789012345678901234567890"(4) 处理科学计数法
const sciNum = new BigNumber('1.23e+18');
console.log(sciNum.toString()); // "1230000000000000000"4. 注意事项
(1) 避免直接使用 Number 类型
BigNumber 对象不能直接与 JavaScript 的 Number 类型进行运算,必须先将 Number 转换为 BigNumber:
const a = new BigNumber('12345678901234567890');
const b = 12345;
// 错误:直接与 Number 类型运算
// const sum = a + b;
// 正确:将 Number 转换为 BigNumber
const sum = a.plus(new BigNumber(b));(2) 避免精度丢失
在创建 BigNumber 时,尽量使用字符串而不是数字,以避免精度丢失:
// 错误:精度丢失
const num1 = new BigNumber(12345678901234567890); // 12345678901234567000
// 正确:使用字符串
const num2 = new BigNumber('12345678901234567890'); // 12345678901234567890(3) 处理除零错误
BigNumber 会抛出除零错误:
try {
const result = new BigNumber('10').dividedBy('0');
} catch (e) {
console.error("Division by zero!");
}5. 与其他库的比较
| 特性 | BigNumber (bignumber.js) | BigInt (原生) | Decimal.js |
|---|---|---|---|
| 支持大整数 | ✅ | ✅ | ✅ |
| 支持高精度小数 | ✅ | ❌ | ✅ |
| 支持科学计数法 | ✅ | ❌ | ✅ |
| 链式调用 | ✅ | ❌ | ✅ |
| 原生支持 | ❌ | ✅ | ❌ |
6. 总结
BigNumber 是 JavaScript 中处理大整数和高精度小数的强大工具,适用于以下场景:
超出
Number类型范围的整数运算。需要高精度的小数运算。
科学计算或金融计算。
到此这篇关于js中BigNumber的使用详解的文章就介绍到这了,更多相关js BigNumber使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
