java 大数相加
大数相加是指数字太大,超过了基本数据类型的表数范围,只能用字符串形式来表示数字。
注意:我们假定输入的两个数字字符串是符合规范的,如:“12344214141411124”。
代码如下:
public static String addLargeNumber(String a, String b) {
// 数字字符串a,b的倒数索引
int aIndex = 1;
int bIndex = 1;
// 进位
int flag = 0;
String res = "";
while (aIndex <= a.length() || bIndex <= b.length() || flag > 0) {
// 找到字符串倒数第 i 位上的数字
int aNum = aIndex <= a.length() ? a.charAt(a.length() - aIndex) - '0' : 0;
int bNum = bIndex <= b.length() ? b.charAt(b.length() - bIndex) - '0' : 0;
// 将两个数字相加
res = (aNum + bNum + flag) % 10 + res;
// 判断是否进位
flag = (aNum + bNum + flag) / 10;
aIndex++;
bIndex++;
}
return res;
}
为了方便测试,我们使用较小的数据测试。
测试代码如下:
public static void main(String[] args) {
// 341234325
String a = "34199939";
String b = "413299999";
System.out.println("计算结果:" + addLargeNumber(a, b));
System.out.println("正确结果:" + (34199939 + 413299999));
}
结果如下: