JAVA实现大数加法

转自:http://to-zoe-yang.iteye.com/blog/1097854


当计算非常大的数的相乘时,使用BigDecimal

便希望能自己实现大数的乘法
因为乘法里要使用加法,就先实现加法了
开始时,大数使用字符串保存
这时候我们需要将大数存储在一个数组里
为了节省空间,我们使用Byte存储每一位

Java代码   收藏代码
  1. public static Byte[] StringToByte(String number){  
  2.     int len = number.length();  
  3.     Byte[] result = new Byte[len];  
  4.     //从高位到低位依次转换,转换后字符串"1234"变为4321,这样方便以后计算  
  5.     for(int i=0; i
  6.         byte curByte =  Integer.valueOf(number.charAt(i)+"").byteValue();  
  7.         result[len-i-1] = curByte;  
  8.     }  
  9.       
  10.     return result;  
  11. }  
	public static Byte[] StringToByte(String number){
		int len = number.length();
		Byte[] result = new Byte[len];
		//从高位到低位依次转换,转换后字符串"1234"变为4321,这样方便以后计算
		for(int i=0; i


加法算法

Java代码   收藏代码
  1. public static Byte[] Add(Byte[] number1, Byte[] number2){  
  2.     int len = (number1.length>number2.length) ? number1.length : number2.length;  
  3.     Byte[] result = new Byte[len+1];  
  4.     Integer sum = new Integer(0);  
  5.     Integer carry = new Integer(0);  
  6.     int i;  
  7.     if(number1.length>number2.length){  
  8.         for(i=0; i
  9.             sum = number1[i].intValue() + number2[i].intValue();                  
  10.             sum = sum +carry;  
  11.             carry = ((sum -10)>=0) ? 1:0;  
  12.             sum = ((sum -10)>=0) ? (sum-10):sum;  
  13.             result[i] = sum.byteValue();  
  14.             sum = 0;  
  15.         }  
  16.         for(;i
  17.             sum = sum +carry;  
  18.             carry = ((sum -10)>=0) ? 1:0;  
  19.             sum = ((sum -10)>=0) ? (sum-10):sum;  
  20.             result[i] = sum.byteValue();  
  21.             sum = 0;  
  22.         }  
  23.         if(carry!=0){  
  24.             result[i] = carry.byteValue();  
  25.         }else{  
  26.             result[i] = 0;  
  27.         }  
  28.     }else{  
  29.         for(i=0; i
  30.             sum = number1[i].intValue() + number2[i].intValue();                  
  31.             sum = sum +carry;  
  32.             carry = ((sum -10)>=0) ? 1:0;  
  33.             sum = ((sum -10)>=0) ? (sum-10):sum;  
  34.             result[i] = sum.byteValue();  
  35.             sum = 0;  
  36.         }  
  37.         for(;i
  38.             sum = number2[i].intValue() + carry;  
  39.             carry = ((sum -10)>=0) ? 1:0;  
  40.             sum = ((sum -10)>=0) ? (sum-10):sum;  
  41.             result[i] = sum.byteValue();  
  42.             sum = 0;  
  43.         }  
  44.         if(carry!=0){  
  45.             result[i] = carry.byteValue();  
  46.         }else{  
  47.             result[i] = 0;  
  48.         }  
  49.     }  
  50.       
  51.     return result;  


你可能感兴趣的:(java_基础)