计算两个1000位大整数的加法

package test;


/**
 * 
 * @author ypj
 *
 */
public class jiafa {

public static String add(String add1,String add2){
//把字符串转化成数组,正常情况需要判断每个字符是否都是数字,如果不是数字,直接返回异常,不用计算
String add1A[] = add1.split("");
String add2A[] = add2.split("");
StringBuffer result = new StringBuffer();
StringBuffer finalResult = new StringBuffer();

//结果用来存放进位数
int temp_result = 0;

//确定最高循环次数
int length = add1A.length>add2A.length?add1A.length:add2A.length;
//两个加数标志位
int x1=add1A.length-1;
int x2=add2A.length-1;
//循环
for(int i = length;i>=0;i--){
int val1 = 0;
int val2 = 0;
//标志位大于等于0 表示 数组中的数字还没循环完,可以继续取,如果取完之后,就默认为0,这样下面的加法逻辑不用动
if(x1>=0){
val1 = Integer.parseInt(add1A[x1]);
}
if(x2>=0){
val2 = Integer.parseInt(add2A[x2]);
}
//取完数值后,标志位--
x1--;
x2--;
//两个值相加,并加上余数
int c_temp = val1+val2+temp_result;
temp_result = 0;//余数每次加完之后要清0
//如果大于10 说明有进位
if(c_temp>=10){
//拿出余数,并且把结果记入到result
temp_result = c_temp/10;
result.append(c_temp - 10);
}else{
//没有进位,直接加入结果
result.append(c_temp);
}
}
//循环退出后判断是否还有进位,需要加上
if(temp_result != 0 ){
result.append(temp_result);
}
String finalRs[] = result.toString().split("");
//对结果倒叙输出就可以了
for(int j = finalRs.length-1;j>=0;j--){
//System.out.print(finalRs[j]);
finalResult.append(finalRs[j]);
}
//System.out.println();

return finalResult.toString();
}

public static void main(String[] args) {
System.out.println(add("999999999999999999991239487123089471239804712398471239087498729871209384791328749801237490813249087132498071239084713290874132908471239807423432","999999999999999999991239487123089471239804712398471239087498729871209384791328749801237490813249087132498071239084713290874132908471239807423432"));
}
//1999999999999999999982478974246178942479609424796942478174997459742418769582657499602474981626498174264996142478169426581748265816942479614846864


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值