二进制计算存在精度问题,如何转换成其他的计算方式才能保证精准呢
这时,就要将数值转换成字符串,一位一位的进行计算
比如,两个数字字符串相加,最后转换成字符输出怎么表示
const num1 = "15633543646"
const num2 = "243534654"
// 定义一个相加的计算函数
function addStrings(n1, n2) {
// 计算两个数的位数
let i = n1.length - 1
let j = n2.length - 1
// add是进位,默认是0
let add = 0
// 最后的返回的字符串
let res = ""
// 循环计算是否还有位数,没有了就定义0,还有位数的继续计算
while(i >= 0 || j >= 0 || add != 0) {
let x = i >= 0 ? n1.charAt(i) - "0" : 0
let y = j >= 0 ? n2.charAt(j) - "0" : 0
// 每一位进行计算,比如十位,将两个数的十位部分和进位相加
let r = x + y + add
// 这个位的超过10就进位,保留余下的数
res += result % 10
// 计算进位十多少
add = parseInt(r / 10)
i--
j--
}
// 最后反转字符串
return res.split("").reverse().join("").toString()
}
addStrings(num1, num2)