高精度加法
XMit Lv3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
var addStrings = function(num1, num2) {
num1 = num1.split("").map(it => +it) // 字符串转成数组
num2 = num2.split("").map(it => +it) // 字符串转成数组
var len1 = num1.length
var len2 = num2.length
var len = 1 + (len1 > len2 ? len1 : len2) // 结果数组的长度
var myArray = new Array(len).fill(0) // 向结果数组填充 0
var i = len1 - 1,
j = len2 - 1,
k = len - 1
while (k > 0) {
num1i = num1[i] === undefined ? 0 : num1[i] // 任何一个数读不到值时,把值变为0
num2j = num2[j] === undefined ? 0 : num2[j] // 任何一个数读不到值时,把值变为0
var element = myArray[k] + num1i + num2j
myArray[k] = element % 10 // 计算结果数组的个位数
myArray[k - 1] = (element - myArray[k]) / 10 // 计算结果数组的十位数
k--
j--
i--
}
if (myArray[0] === 0) { // 如果结果数组没进位就删除
myArray.shift()
}
if (myArray.length === 0) { // 数组的长度为零就返回0
return "0"
}
return myArray.join("") // 把数组转成字符串返回
};
由 Hexo 驱动 & 主题 Keep
本站由 提供部署服务