JavaScript实现大整数减法

Posted 幽梦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript实现大整数减法相关的知识,希望对你有一定的参考价值。

继上一篇博文写了大整数加法之后,我又模拟上篇博文的算法,自己实现了大整数减法。

大整数减法相对于加法来说,稍微复杂一点。由于要考虑一些情况:

1. 两个数相减,可能会出现结果为正、负和0三种情况;

2. 会出现借位的情况,而且还要考虑最高位时有没有借位。

实现代码如下:

function subString(a,b) {
    //将字符串a和b补全成同等长度
    while (a.length < b.length){
        a = ‘0‘ + a;
    }
    while (b.length < a.length){
        b = ‘0‘ + b;
    }
    //res保存结果,c用来标识有无借位的情况
    var res=‘‘, c=0;
    a = a.split(‘‘);
    b = b.split(‘‘);
    while (a.length) {
        var num1 = ~~a.pop();
        var num2 = ~~b.pop();
        if (num1 >= num2){
            c = num1 - num2 - c;
            res = c + res;
            c = false;
        }else {
            c = num1 + 10 - num2 - c;
            res = c + res;
            c = true
        }
        //判断最高位有无借位,若有借位,则说明结果为负数
        if (a.length === 0 && c){
            res = ‘-‘ + res
        }

    }
    res = res.replace(/^0+/,‘‘);
    //判断最后的结果是否为0
    if (res === ‘‘){
        res = 0;
    }
    return res;
}

 

技术分享图片

以上是关于JavaScript实现大整数减法的主要内容,如果未能解决你的问题,请参考以下文章

Code Kata:大整数四则运算—除?法 javascript实现

基于Java的大整数运算的实现(加法,减法,乘法)学习笔记

用c语言实现超长整数的加法运算

用c语言实现大整形运算,64位长整型的加减法,输入限制为64位长度整数

2736 大整数减法

OJ 大整数减法