当前位置:首页 > JavaScript

js如何实现长整数相加

2026-04-04 22:20:41JavaScript

实现长整数相加的方法

在JavaScript中处理大整数相加时,由于数字精度限制(Number.MAX_SAFE_INTEGER为9007199254740991),直接相加可能导致精度丢失。以下是几种解决方案:

方法一:字符串模拟竖式加法

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

js如何实现长整数相加

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

  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;
}

方法二:使用BigInt类型

ES2020引入的BigInt可直接处理大整数:

js如何实现长整数相加

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

注意:输入需要是字符串或BigInt,避免数字字面量被当作普通Number。

方法三:第三方库

使用如bignumber.js等专业数学库:

const BigNumber = require('bignumber.js');
function addBigNumbers(a, b) {
  return new BigNumber(a).plus(b).toString();
}

注意事项

  1. 字符串方法需处理前导零和非法输入
  2. BigInt兼容性问题(IE不支持)
  3. 性能考虑:超长数字(万位以上)建议用字符串方法分块处理

分享给朋友:

相关文章

php如何实现静态化

php如何实现静态化

PHP 实现静态化的方法 使用 ob_start() 和 ob_get_contents() 利用 PHP 的输出缓冲功能捕获动态生成的页面内容,将其保存为静态文件。这种方法适用于内容不频繁变化的页面…

java如何实现多线程

java如何实现多线程

实现多线程的方法 在Java中,实现多线程主要有两种方式:继承Thread类和实现Runnable接口。此外,还可以使用ExecutorService等高级工具类来管理线程。 继承Thread类 通…

vue如何实现同步

vue如何实现同步

Vue 同步实现方法 在 Vue 中实现同步操作通常涉及处理异步任务(如 API 调用、定时器等)的同步化。以下是几种常见方法: 使用 async/await 通过 async/await 语法可以…

vue如何实现echarts

vue如何实现echarts

Vue 中集成 ECharts 的方法 安装 ECharts 依赖包 通过 npm 或 yarn 安装核心库: npm install echarts --save # 或 yarn add e…

vue权限如何实现

vue权限如何实现

Vue 权限实现方案 在 Vue 项目中实现权限控制通常涉及路由权限、按钮权限和接口权限三个方面。以下是具体实现方法: 路由权限控制 路由权限通常通过动态路由和全局路由守卫实现。用户登录后获取权限列…

vue如何实现全屏

vue如何实现全屏

实现全屏的基本方法 在Vue中实现全屏功能可以通过浏览器提供的Fullscreen API完成。以下是一个基础实现示例: // 进入全屏 function enterFullscreen(eleme…