[技术分享]JS 现实 超大整数加法

stclair2201发布于20 天前 • 43 次阅读

前两天,一个朋友出了一个算法题,在不使用BigInteger的情况下,实现加法。

尝试了一下使用JS进行编码,如下:

大家有兴趣可以使用超长的其他减法、乘法等,也可以使用其他语言来尝试一下。

注:BigInteger 是JAVA 中整数对象。

先看一下效果:

image

function plus(_a,_b){
    /// 反转字符从个位开始做加法
    _a = _a.toString();
    _b = _b.toString();

    /// 由于是按位做加法,转换为数组
    var a = _a.split("").reverse().join("");
    var b = _b.split("").reverse().join("")

    // 找出其中长度最长的数
    var long = b.length >= a.length ? b:a;
    var short = b.length < a.length ? b:a;

    var result = []

    /// 定义 进位 字段
    var jinwei = 0;

    for(var i=0;i<long.length;i++){
        var tmp = 0;
        if(short.length > i){  // 短字符还有值
            tmp = parseInt(short[i]) + parseInt(long[i]) + jinwei;
        }else{
            tmp = parseInt(long[i])+ jinwei
        }

        /// 判断是否需要进位
        if(tmp > 9){
            result.push(tmp.toString()[1]);
            jinwei = 1;
        }else{
            result.push(tmp.toString());
            jinwei = 0;
        }
    }

    /// 判断是否需要升位
    if(jinwei > 0) result.push(1);
    /// 反转字符,输出
    return result.reverse().join("")
}
共收到 1 条回复
y

来自易支烟的NodeJs水贴 https://blog.1zyan.cn