<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    (轉貼) 超大整數相加,超過了long的范圍,你要怎么做!

     

    引用:

     這個只能夠用字符串的形式來處理了,因為計算機能夠處理的最大是long型,本文以字符串的形式來進行超大數據的相加,理論上只要你的內存允許,相加多大的數都可以。

    /**

     * 超大整數相加:

     * 題目要求:如果系統要使用超大整數(超過long的范圍),請你設計一個數據結構來存儲這種

     * 超大型數字以及設計一種算法來實現超大整數的加法運算

     * @author Administrator

     *

     */

    public class VeryBigNumAdd {

     

        /**

         * @param args

         */

        public static void main(String[] args) {

           // TODO Auto-generated method stub

           /*

           String a="1223232";

           for(int i=a.length()-1;i>=0;i--)

           {

               System.out.print(a.charAt(i));

           }

           */

           VeryBigNumAdd vbn=new VeryBigNumAdd();

           String a="123453243455535634535252345234677576252241234123523453664563634";

           String b="123453243455535634535252345234677576252241234123523453664563634";

           String result=vbn.doAdd(a,b);

           System.out.println("result:"+result);

        }

        /**

         *

         * @param a 加數字符串1

         * @param b 加數字符串2

         * @return 結果字符串

         * 分析:

         * 1、取得兩個字符串的長度

         * 2、把兩個的長度做比較,并得出較長的長度,及較短的長度

         * 3、把長度較短的加數字符串,在左面補0,使之與較長的字符串一樣長

         * 4、從最高位,一個個數的取出來相加,當然首先得轉換為整型

         * 5、設置進位,如果兩個數相加及加上進位大于等于10,并且這不是最左邊一個字符相加,相加結果等于

         *    (取出1+取出2+進位)-10,并把進位設為1;如果沒有大于10,就把進位設為0,如些循環,把

         *    相加的結果以字符串的形式結合起來,就得到最后的結果

         */

        String doAdd(String a,String b)

        {

           String str="";

           int lenA=a.length();

           int lenB=b.length();

           int maxLen=(lenA>lenB) ? lenA : lenB;

           int minLen=(lenA<lenB) ? lenA : lenB;

           String strTmp="";

           for(int i=maxLen-minLen;i>0;i--)

           {

               strTmp+="0";

           }

           //把長度調整到相同

           if(maxLen==lenA)

           {

               b=strTmp+b;

           }else

               a=strTmp+a;

           int JW=0;//進位

           for(int i=maxLen-1;i>=0;i--)

           {        

               int tempA=Integer.parseInt(String.valueOf(a.charAt(i)));

               int tempB=Integer.parseInt(String.valueOf(b.charAt(i)));

               int temp;

               if(tempA+tempB+JW>=10 && i!=0)

               {

                  temp=tempA+tempB+JW-10;

                  JW=1;

               }

               else

               {

                  temp=tempA+tempB+JW;

                  JW=0;

               }        

               str=String.valueOf(temp)+str;        

           }

           return str;

        }

     

    }

     

    原帖地址: http://blog.csdn.net/fenglibing/archive/2007/08/23/1756773.aspx

        
        其實java 本身也提供了api ,java.math.BigInteger;import java.math.BigDecimal; 也可以實現。

    code :

    package com.kangdy.test;

    import java.math.BigInteger;
    import java.math.BigDecimal;

    public class NumberTest {
     public static void main(String args[]){
      BigInteger b1= new BigInteger("2222222222222222222222222");
      BigInteger b2= new BigInteger("8888888888888888888888888");
      BigDecimal b3 = new BigDecimal("66666666666666666666666666");
      BigDecimal b4 = new BigDecimal("9999999999999999999999999999");
      System.out.println(b1.add(b2).toString());
      System.out.println(b3.add(b4).toString());
     }
    }

    這里只是給出簡單的例子。



    posted on 2010-12-10 14:06 AK47 閱讀(932) 評論(0)  編輯  收藏 所屬分類: java相關

    <2010年12月>
    2829301234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    導航

    統計

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 91制片厂制作传媒免费版樱花| 亚洲av日韩av不卡在线观看| 亚洲图片中文字幕| 毛片在线播放免费观看| 亚洲日本中文字幕天堂网| 菠萝菠萝蜜在线免费视频| 国产又长又粗又爽免费视频 | 亚洲大码熟女在线观看| 日韩免费电影在线观看| 免费精品国产自产拍在线观看| 免费成人黄色大片| a级毛片免费在线观看| 久久亚洲精品中文字幕无码| 亚洲成A人片在线观看中文| 两个人看的www视频免费完整版| 亚洲精品无码午夜福利中文字幕| 久久国产精品免费专区| 亚洲国产av美女网站| 全部免费毛片免费播放| 好爽又高潮了毛片免费下载| 色屁屁www影院免费观看视频 | 无码国产精品一区二区免费虚拟VR| 亚洲色www永久网站| 国产电影午夜成年免费视频| 亚洲国产精品无码久久久秋霞1 | 日本在线看片免费| 久久久精品视频免费观看| 亚洲激情校园春色| 又粗又硬又黄又爽的免费视频 | 最新亚洲成av人免费看| 无码区日韩特区永久免费系列| 无码日韩精品一区二区三区免费| 亚洲精品动漫免费二区| 亚洲偷自拍另类图片二区| 亚洲综合精品成人| 亚洲人av高清无码| 亚洲av无码专区亚洲av不卡| 久久亚洲国产成人亚| 亚洲国产精品人久久| 亚洲国产a级视频| 亚洲精品高清一二区久久|