当前位置:首页 > 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实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现祖玛

js实现祖玛

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

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…