当前位置:首页 > JavaScript

js实现大数

2026-02-02 07:02:41JavaScript

JavaScript 实现大数运算

JavaScript 的 Number 类型采用 IEEE 754 标准,最大安全整数为 2^53 - 1(即 9007199254740991)。超过这个范围的整数运算需要使用大数处理技术。

使用 BigInt 类型

ES2020 引入了 BigInt 类型,可以直接处理大整数:

const bigNum = 9007199254740993n; // 注意后缀 n
console.log(bigNum + 1n); // 9007199254740994n

BigInt 支持所有常规算术运算,但不能与 Number 类型混合运算:

const sum = bigNum + BigInt(1); // 正确
const sum = bigNum + 1; // 报错

第三方库方案

对于更复杂的大数运算(包括浮点数),可以使用以下库:

  1. bignumber.js:

    const BigNumber = require('bignumber.js');
    let x = new BigNumber('123456789.123456789');
    let y = x.plus('987654321.987654321');
    console.log(y.toString()); // "1111111111.11111111"
  2. decimal.js:

    const Decimal = require('decimal.js');
    let a = new Decimal('0.1');
    let b = a.plus('0.2');
    console.log(b.toString()); // "0.3"
  3. math.js:

    const math = require('mathjs');
    const hugeNum = math.bignumber('1e500');
    const result = math.sqrt(hugeNum);
    console.log(math.format(result)); // "1e250"

手动实现加法算法

对于教育目的,可以手动实现大数加法:

function addBigNumbers(a, b) {
  let carry = 0;
  let result = [];
  const maxLength = Math.max(a.length, b.length);

  a = a.padStart(maxLength, '0');
  b = b.padStart(maxLength, '0');

  for (let i = maxLength - 1; i >= 0; i--) {
    const sum = parseInt(a[i]) + parseInt(b[i]) + carry;
    carry = Math.floor(sum / 10);
    result.unshift(sum % 10);
  }

  if (carry) result.unshift(carry);
  return result.join('');
}

console.log(addBigNumbers('999', '1')); // "1000"

注意事项

BigInt 不能与 Number 混合运算,需要显式转换:

js实现大数

Number(1n) + 2 // 3
1n + BigInt(2) // 3n

大数运算性能低于原生 Number 运算,仅在必要时使用。浮点数精度问题建议使用 decimal.js 等专门库处理。

标签: 大数js
分享给朋友:

相关文章

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…