UDN-企业互联网技术人气社区

板块导航

浏览  : 1532
回复  : 2

大数相加算法

[复制链接]
展翔的头像 楼主
发表于 2015-4-8 10:13:52 | 显示全部楼层 |阅读模式

public class BigDataTest {

public static void main(String args[]) {
  BigNumAddTest bignumaddtest = new BigNumAddTest();
  String num2 = "16897445646878946546546546541";
  String num1 = "2345469874846464897464964894";
  bignumaddtest.getBigNumResult(num1, num2);
}
}

/**
计算结果的类
**/
public class BigNumAddTest {
private int[] sum = null;
public int[] getBigNumResult(String num1,String num2){
  int num1length = num1.length();
  int num2length = num2.length();
  char[] num1objs = new char[num1length];
  char[] num2objs = new char[num2length];
  List num1list = new ArrayList();
  for(int i=0;i<num1length;i++){
   num1objs[i] = num1.charAt(i);
  }
  for(int i=0;i<num2length;i++){
   num2objs[i] = num2.charAt(i);
  }
  
  
  if(num1length < num2length){
   sum = new int[num2length+1];
   for(int j=0;j<num2length - num1length;j++){
    num1list.add('0');
   }
   for(int h=0;h<num1length;h++){
    num1list.add(num1objs[h]);
   }
   //计算大数相加结果
   Object[] num11 = num1list.toArray();
   //设置进位标识,默认为0不进位
   int flag = 0;
   for(int m=num11.length;m>0;m--){
    Integer a1 = Integer.parseInt(String.valueOf(num2objs[m-1]));
    Integer a2 = Integer.parseInt(String.valueOf(num11[m-1]));
    if(a1 + a2 >= 10){
     sum[num11.length - m] = a1 + a2 - 10 + flag;
     flag = 1;
    }else{
     sum[num11.length - m] = a1 + a2 + flag;
     flag = 0;
    }
   }
   
  }else{
   //sum = new char[num2length];
  }
  return sum;
}
}
发表于 2015-4-8 17:49:27 | 显示全部楼层
顶一下~学习啦~{:3_41:}
使用道具 举报

回复

发表于 2015-8-18 13:44:26 | 显示全部楼层
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部