当前位置:首页 > JavaScript

js如何实现长整数相加

2026-03-01 21:31:51JavaScript

实现长整数相加的方法

在JavaScript中,处理超出Number.MAX_SAFE_INTEGER(约9000万亿)的长整数相加时,需要使用字符串或数组来模拟逐位运算。以下是两种常见方法:

字符串逐位相加法

将长整数转换为字符串,从低位到高位逐位相加并处理进位:

function addBigNumbers(a, b) {
  let result = '';
  let carry = 0;
  let i = a.length - 1;
  let j = b.length - 1;

  while (i >= 0 || j >= 0 || carry > 0) {
    const digitA = i >= 0 ? parseInt(a[i--]) : 0;
    const digitB = j >= 0 ? parseInt(b[j--]) : 0;
    const sum = digitA + digitB + carry;
    result = (sum % 10) + result;
    carry = Math.floor(sum / 10);
  }

  return result.replace(/^0+/, '') || '0';
}

使用示例:

console.log(addBigNumbers('9999999999999999', '1')); // 输出 "10000000000000000"

使用BigInt原生支持

ES2020引入的BigInt类型可直接处理超长整数:

function addBigInt(a, b) {
  return (BigInt(a) + BigInt(b)).toString();
}

使用示例:

js如何实现长整数相加

console.log(addBigInt('9999999999999999', '1')); // 输出 "10000000000000000"

注意事项

  1. 字符串方法需要手动处理前导零和进位,适合所有JavaScript环境
  2. BigInt方法更简洁但需要现代浏览器或Node.js环境(ES2020+)
  3. 输入数字建议以字符串形式传递,避免科学计数法精度丢失
  4. 负数的相加需要额外处理符号判断

两种方法均可正确处理超过Number安全范围的整数相加,实际使用时可根据运行环境选择合适方案。

分享给朋友:

相关文章

vue如何实现id

vue如何实现id

在 Vue 中实现 ID 绑定 Vue 提供了多种方式为元素或组件绑定唯一的 ID,可以根据具体需求选择合适的方法。 方法一:使用 v-bind 绑定静态或动态 ID <template&g…

vue如何实现到期提醒

vue如何实现到期提醒

实现思路 在Vue中实现到期提醒功能,可以通过计算日期差、定时检查和通知用户三个核心步骤完成。需要结合Vue的响应式特性和JavaScript的日期处理能力。 计算日期差 使用JavaScr…

如何实现java序列化

如何实现java序列化

实现Java序列化的方法 1. 实现Serializable接口 要使一个类可序列化,需要让该类实现java.io.Serializable接口。这是一个标记接口,没有任何方法需要实现。 publi…

vue如何实现图

vue如何实现图

Vue 实现图表的方法 Vue 中实现图表可以通过多种方式,常见的有使用第三方库或自定义实现。以下是几种常见的方法: 使用 ECharts ECharts 是一个功能强大的图表库,支持多种图表类型。…

如何实现vue验证

如何实现vue验证

Vue 表单验证的实现方法 Vue 表单验证可以通过多种方式实现,包括内置指令、第三方库和自定义验证逻辑。以下是几种常见的方法: 使用 Vue 内置指令进行基础验证 Vue 提供了 v-model…

react如何实现菜单

react如何实现菜单

使用 React 实现菜单的方法 使用状态管理控制菜单显示/隐藏 通过 useState 管理菜单的展开和收起状态,结合点击事件切换状态。 import { useState } from 'rea…