大數加減法 - java實現

計算機處理的各類數據類型都有個範圍,超出範圍的就處理不了。數組

若是作超大數運算加減乘除,普通方法確定是不行的,那麼咱們遇到大數的運算怎麼處理呢?今天介紹一種大數加減乘除運算的方法app

思路:spa

1. 將兩個特大的整數利用字符數組做爲存儲介質。code

2. 逐位計算 遍歷結果逢十進一。blog

3. 對存儲結果的數組進行翻轉處理。get

下面上代碼:string

 1 public class LargeIntSub {
 2     public static void main(String[] args) {
 3         
 4         String a="6789";
 5         String b="123";
 6         int []pa=stringToInts(a);
 7         int []pb=stringToInts(b);
 8         String result_sub=sub(pa,pb);
 9         System.out.println("sub result is:"+result_sub);
10     }
11     
12     public static int[] stringToInts(String s){
13         int[] n = new int[s.length()]; 
14         for(int i = 0;i<s.length();i++){
15         n[i] = Integer.parseInt(s.substring(i,i+1));
16         }
17         return n;
18     }
19     
20     public static String sub(int []a,int []b){
21         StringBuffer sb=new StringBuffer();
22         boolean flag=false;
23         if(a.length<b.length){
24             int c[]=a;
25             a=b;b=c;
26             flag=true;
27         }
28         int a_len= a.length-1;
29         int b_len=b.length-1;
30         int degrade=0;
31         while(a_len>=0||b_len>=0){
32             int temp=0;
33             if(a_len>=0&&b_len>=0){
34                 if((a[a_len]-degrade)<b[b_len]){
35                     temp=a[a_len]+10-b[b_len]-degrade;
36                     degrade=1;
37                 }else{
38                     temp=a[a_len]-b[b_len]-degrade;
39                 }
40             }else if(a_len>=0){
41                 temp=a[a_len]-degrade;
42                 degrade=0;
43             }
44             sb.append(temp+"");
45             
46             a_len--;b_len--;
47         }
48         if(flag){
49             return getNum(sb.append("-").reverse());
50         }
51         return getNum(sb.reverse());
52     }
53     public static String getNum(StringBuffer sb){
54         while(sb.length() > 1 && sb.charAt(0) == '0') {
55             sb.deleteCharAt(0);
56         }
57         return sb.toString();
58     }
59 
60 }
相關文章
相關標籤/搜索