当前位置:首页 > JavaScript

js如何实现长整数相加

2026-01-31 06:19:56JavaScript

实现长整数相加的方法

在JavaScript中,处理超出Number.MAX_SAFE_INTEGER(即2^53 - 1)的长整数相加时,直接使用+运算符会导致精度丢失。以下是几种实现方法:

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

将长整数转换为字符串,按位相加并处理进位:

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

// 示例
console.log(addBigNumbers('12345678901234567890', '98765432109876543210')); // "111111111011111111100"

方法2:使用BigInt原生支持

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

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

// 示例
console.log(addBigNumbers('12345678901234567890', '98765432109876543210')); // "111111111011111111100"

方法3:处理数字和字符串混合输入

兼容数字和字符串输入,自动转换为字符串处理:

js如何实现长整数相加

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

    for (let i = 0; i < maxLength; i++) {
        const digitA = parseInt(a.charAt(a.length - 1 - i) || '0');
        const digitB = parseInt(b.charAt(b.length - 1 - i) || '0');
        const sum = digitA + digitB + carry;
        result.unshift(sum % 10);
        carry = Math.floor(sum / 10);
    }

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

注意事项

  1. 输入验证:确保输入为有效数字字符串,避免非数字字符。
  2. 性能优化:对于超长数字,字符串方法的性能优于BigInt
  3. 负号处理:上述方法未处理负数,需额外判断符号位。

根据实际需求选择方法:现代环境优先使用BigInt,兼容性要求高时选择字符串模拟。

分享给朋友:

相关文章

h5如何实现vr效果

h5如何实现vr效果

使用WebXR API实现VR效果 WebXR是浏览器中实现VR/AR的核心API,支持设备姿态追踪、渲染交互等功能。需在支持WebXR的设备(如Oculus、HTC Vive)或浏览器模拟环境中运行…

vue项目如何实现

vue项目如何实现

安装Vue.js 通过npm或yarn安装Vue.js。确保Node.js环境已配置完成。 npm install vue # 或 yarn add vue 创建Vue项目 使用Vue CLI工具快…

vue router如何实现

vue router如何实现

Vue Router 的实现方法 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是实现 Vue Router 的具体方法: 安装 Vue Router…

vue如何实现刷新

vue如何实现刷新

实现页面刷新的方法 在Vue中实现刷新功能可以通过以下几种方式实现: 使用location.reload() 直接调用浏览器的原生方法强制刷新整个页面: methods: { refreshP…

vue如何实现分页

vue如何实现分页

实现分页的基本思路 在Vue中实现分页通常需要结合后端API返回的分页数据和前端的分页组件。前端需要处理页码切换、数据请求和渲染逻辑。 后端API分页参数 后端API通常需要接收分页参数,例如pag…

vue如何实现搜索

vue如何实现搜索

实现搜索功能的基本思路 在Vue中实现搜索功能通常涉及以下几个核心步骤:监听用户输入、过滤数据、动态渲染结果。以下是具体实现方法。 监听用户输入 使用v-model双向绑定搜索框的输入值,监听用户输…