[技术分享]JS 现实 超大整数加法
stclair2201发布于1 年前 • 356 次阅读
前两天,一个朋友出了一个算法题,在不使用BigInteger的情况下,实现加法。
尝试了一下使用JS进行编码,如下:
大家有兴趣可以使用超长的其他减法、乘法等,也可以使用其他语言来尝试一下。
注:BigInteger 是JAVA 中整数对象。
先看一下效果:
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("")
}