数学运算
2025-07-09 19:55:36
字符串相加
给定两个字符串形式的正数相加
add.ts
test.ts
function add(a: string, b: string) {
let [intA, decA = ''] = a.split('.')
let [intB, decB = ''] = b.split('.')
const maxIntLen = Math.max(intA.length, intB.length)
const maxDecLen = Math.max(decA.length, decB.length)
intA = intA.padStart(maxIntLen, '0')
intB = intB.padStart(maxIntLen, '0')
decA = decA.padEnd(maxDecLen, '0')
decB = decB.padEnd(maxDecLen, '0')
let carry = 0
let decimal = ''
for (let i = maxDecLen - 1; i >= 0; i--) {
const sum = Number(decA[i]) + Number(decB[i]) + carry
decimal = (sum % 10) + decimal
carry = Math.floor(sum / 10)
}
let integer = ''
for (let i = maxIntLen - 1; i >= 0; i--) {
const sum = Number(intA[i]) + Number(intB[i]) + carry
integer = (sum % 10) + integer
carry = Math.floor(sum / 10)
}
if (carry > 0) integer = carry + integer
decimal = decimal.replace(/0+$/, '')
return decimal ? `${integer}.${decimal}` : integer
}