字符串的相加减

43 阅读1分钟

二进制计算存在精度问题,如何转换成其他的计算方式才能保证精准呢

这时,就要将数值转换成字符串,一位一位的进行计算

比如,两个数字字符串相加,最后转换成字符输出怎么表示

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)