大数加法
在Java中如果我们想算很大很大的数相加等于多少的时候,我们发现没有一种数据类型能够装下他们,所以我们只能用String来接纳他们,但是String是无法做加法的,他的 + 只是单纯的拼接字符串
String a = "10000000004564564645446464644";
String b = "41694424644544545456444546444";
System.out.println(a+b);
1000000000456456464544646464441694424644544545456444546444
所以为了做这样的加法,我们想到了一个办法我们吧两个数的对应位相加,然后再转换成String,以下是代码实现
public static String add(String a,String b){
int ai = 1 ;//数a的倒数第i位
int bi = 1 ;//数b的倒数第i位
int flag = 0 ;//进位标志
String result = "";
while (ai <= a.length() || bi <= b.length() || flag >0){
int m = ai <= a.length() ? a.charAt(a.length() - ai) - '0' : 0 ;
int n = bi <= b.length() ? b.charAt(b.length() - bi) - '0' : 0 ;
//加完对应位的数
result = (m + n + flag) % 10 + result ;
//进位数
flag = (m + n + flag) / 10 ;
ai ++ ;
bi ++ ;
}
return result ;
}
}