js中BigNumber的使用详解

 更新时间:2025年05月08日 10:55:48   作者:胡歌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使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • js实现左右两侧浮动广告

    js实现左右两侧浮动广告

    这篇文章主要为大家详细介绍了js实现左右两侧浮动广告,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • 在JavaScript中获取请求的URL参数[正则]

    在JavaScript中获取请求的URL参数[正则]

    在ASP.NET后台代码中,对于这样的URL请求地址:http://www.abc.com?id=001,我们可以通过Request.QueryString["id"]的方法很容易的获取到URL中请求的参数的值,但是要在前台js代码中获取请求的参数的值,应该怎么做呢?
    2010-12-12
  • 全面接触神奇的Bootstrap导航条实战篇

    全面接触神奇的Bootstrap导航条实战篇

    导航条(navbar)在Bootstrap中是一个独立组件,导航条(navbar)和导航(nav)在Bootstrap中是有明显区别的,本文全面接触神奇的Bootstrap导航条,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • 一文秒懂JavaScript DOM操作基础

    一文秒懂JavaScript DOM操作基础

    通过这篇文章帮助大家快速学习JavaScript DOM操作基础的相关知识,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2021-04-04
  • js判断屏幕分辨率的代码

    js判断屏幕分辨率的代码

    由于现在的很多用户的分辨率问题,导致很多广告会遮挡内容或者对于不同分辨率的用户不同的css样式,就可以参考下面的代码
    2013-07-07
  • 一个获取第n个元素节点的js函数

    一个获取第n个元素节点的js函数

    这篇文章主要介绍了一个获取第n个元素节点的js函数,功能还不完善 ,需要的朋友可以参考下
    2014-09-09
  • JavaScript 一道字符串分解的题目

    JavaScript 一道字符串分解的题目

    要求用js写一个函数,对传入的形如下网址字符串,返回对应的对象。
    2011-08-08
  • JavaScript中Array.find()方法的使用与技巧

    JavaScript中Array.find()方法的使用与技巧

    在JavaScript中,Array.find是一个高效且易用的数组查找方法,和其他遍历方法相比,Array.find不仅能更简洁地找到符合条件的第一个元素,返回的元素是原数组中的引用,本文给大家介绍了JavaScript中Array.find()方法的使用与技巧,需要的朋友可以参考下
    2025-02-02
  • javascript设计模式 – 原型模式原理与应用实例分析

    javascript设计模式 – 原型模式原理与应用实例分析

    这篇文章主要介绍了javascript设计模式 – 原型模式,结合实例形式分析了javascript原型模式相关概念、原理、应用场景及操作注意事项,需要的朋友可以参考下
    2020-04-04
  • 原生JS轮播图插件

    原生JS轮播图插件

    本文主要介绍了原生JS轮播图插件。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02

最新评论