大数乘法

        在编程语言中实现,大数乘法,不像我们人为的计算。我们认为的计算乘法,在计算每一步的时候,都考虑进位。而在编程语言中,我们把进位的情况都放在后面处理,方便很多。总之,处理大数的问题,第一步就要考虑是用string来存放输入数据,代码如下:

        

public class M9_BigMul {

    // 大数乘法
    static String mul(String str1, String str2){
        char[] s1 = str1.toCharArray();
        char[] s2 = str2.toCharArray();
        int n1 = s1.length, n2 = s2.length;
        int[] a = new int[n1];
        int[] b = new int[n2];
        int[] c = new int[n1 + n2];   //注意这里是n1+n2
        for(int i = 0; i < n1; i++) a[i] = s1[n1 - i - 1] - '0';  //赋值方便处理
        for(int i = 0; i < n2; i++) b[i] = s2[n2 - i - 1] - '0';  //赋值方便处理
        for(int i = 0; i < n1; i++){
            for(int j = 0; j < n2; j++){
                c[i+j] += a[i] * b[j];
            }
        }
        for(int i = 0; i < n1 + n2 - 1; i++){
            if(c[i] >= 10){
                c[i+1] += c[i]/10;   //进位的情况,注意这里
                c[i] %= 10;
            }
        }
        int i;
        for(i = n1 + n2 - 1; i >= 0; i--) if(c[i] != 0) break;
        StringBuilder sb = new StringBuilder();
        for(; i >= 0; i--) sb.append( (char)(c[i] + '0'));   //顺序逆转需要逆转过来,注意这里
        return sb.toString();
    }
}

  在Java中提供了BigInteger类和BigDecimal类,分别用来处理大整数和大浮点数,我们只要调用里面提供的方法就能很方便的进行大数的四则运算,具体实现可参考:http://www.cnblogs.com/wuqianling/p/5410218.htm

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值