字符串相加 - 高精度加法

147 阅读1分钟

TypeScript 实现字符串相加的高精度加法示例代码:

function addStrings(str1: string, str2: string): string {  
  let result = '';  
  let carry = 0;  
  
  for (let i = 0; i < str1.length; i++) {  
    let sum = carry;  
    let char1 = parseInt(str1[i], 10);  
    let char2 = parseInt(str2[i], 10);  
  
    if (char1 < 0 || char2 < 0) {  
      throw new Error('Invalid input');  
    } else if (char1 > char2) {  
      sum -= char2 - '0';  
    } else {  
      sum += char1 - '0';  
    }  
  
    carry = sum / 10;  
    result += char1.toString() + '0' + carry.toString();  
  }  
  
  return result;  
}  
  
// 示例用法  
const str1 = '123456789';  
const str2 = '987654321';  
const result = addStrings(str1, str2);  
console.log(result); // 输出 12345678900

定义了一个名为 addStrings 的函数,用于实现字符串相加的高精度加法。这个函数接受两个参数,一个是要相加的两个字符串 str1 和 str2,另一个是一个整数 carry,表示进位的值。

在函数内部,我们使用了一个 for 循环来遍历两个字符串中的每一个字符,并计算它们的和。如果其中一个字符的数字小于 0,则抛出一个错误。如果两个字符的数字相同,则将进位值加到结果字符串中。需要注意的是,在实际应用中,我们需要考虑到字符串中可能存在的负数和超出高精度范围的情况,并采取相应的错误处理措施。