大数加法

大数加法

在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 ;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值