Java Home

          Java技術修煉中...
          posts - 20, comments - 22, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          java.math.BigInteger使用心得總結

          Posted on 2006-12-05 10:20 Yemoo'S Java Blog 閱讀(16437) 評論(4)  編輯  收藏
          今天參考課本寫了一個關于二進制與十進制轉換的程序,程序算法不難,但寫完后測試發(fā)現(xiàn)不論是二轉十還是十轉二,對于大于21億即超過整數(shù)范圍的數(shù)不能很好的轉換。都會變成0.
          參考書籍發(fā)現(xiàn)使用使用BigInteger可以解決這個問題。
          于是查找了下JDK,然后測試幾次終于寫成功了!
          使用心得如下:

          1,BigInteger屬于java.math.BigInteger,因此在每次使用前都要import 這個類。偶開始就忘記import了,于是總提示找不到提示符。

          2,其構造方法有很多,但現(xiàn)在偶用到的有:
          BigInteger(String?val)
          ??????????將 BigInteger 的十進制字符串表示形式轉換為 BigInteger。
          BigInteger(String?val, int?radix)
          ??????????將指定基數(shù)的 BigInteger 的字符串表示形式轉換為 BigInteger。
          如要將int型的2轉換為BigInteger型,要寫為BigInteger two=new BigInteger("2"); //注意2雙引號不能省略

          3,BigInteger類模擬了所有的int型數(shù)學操作,如add()==“+”,divide()==“-”等,但注意其內(nèi)容進行數(shù)學運算時不能直接使用數(shù)學運算符進行運算,必須使用其內(nèi)部方法。而且其操作數(shù)也必須為BigInteger型。
          如:two.add(2)就是一種錯誤的操作,因為2沒有變?yōu)锽igInteger型。

          4,當要把計算結果輸出時應該使用.toString方法將其轉換為10進制的字符串,詳細說明如下:
          ?StringtoString()
          ??????????返回此 BigInteger 的十進制字符串表示形式。
          輸出方法:System.out.print(two.toString());

          5,另外說明三個個用到的函數(shù)。???
          ?BigIntegerremainder(BigInteger?val)
          ??????????返回其值為 (this % val) 的 BigInteger。
          ?BigIntegernegate()
          ??????????返回其值是 (-this) 的 BigInteger。
          ?int???????compareTo(BigInteger?val)
          ??????????將此 BigInteger 與指定的 BigInteger 進行比較。
          remainder用來求余數(shù)。
          negate將操作數(shù)變?yōu)橄喾磾?shù)。
          compare的詳解如下:

          compareTo

          public int compareTo(BigInteger?val)
          將此 BigInteger 與指定的 BigInteger 進行比較。對于針對六個布爾比較運算符 (<, ==, >, >=, !=, <=) 中的每一個運算符的各個方法,優(yōu)先提供此方法。執(zhí)行這些比較的建議語句是:(x.compareTo(y) <op> 0),其中 <op> 是六個比較運算符之一。

          指定者:
          接口 Comparable<BigInteger> 中的 compareTo
          參數(shù):
          val - 將此 BigInteger 與之比較的 BigInteger。
          返回:
          當此 BigInteger 在數(shù)值上小于、等于或大于 val 時,返回 -1,0,或 1。


          評論

          # re: java.math.BigInteger使用心得總結  回復  更多評論   

          2010-12-03 00:53 by runningkid
          總結得好好!

          # BigInteger  回復  更多評論   

          2010-12-06 22:40 by liuzhongshu
          剛寫了一篇同樣內(nèi)容的
          http://www.liuzhongshu.com/code/biginteger-and-java-python-php-cplusplus.html

          Java是沒有運算符重載,所以不能直接用運算符,C++就可以了,但C++又沒有內(nèi)置的Biginteger類。

          # re: java.math.BigInteger使用心得總結  回復  更多評論   

          2011-01-14 09:12 by qweqwe
          好個屁

          # re: java.math.BigInteger使用心得總結  回復  更多評論   

          2014-10-09 21:20 by awk
          divide()是除法吧。。。

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 余姚市| 武冈市| 内乡县| 阳高县| SHOW| 桂阳县| 英吉沙县| 错那县| 库伦旗| 安徽省| 叙永县| 石家庄市| 横峰县| 筠连县| 平果县| 武山县| 绥滨县| 驻马店市| 汾西县| 鄂州市| 鄱阳县| 句容市| 太谷县| 家居| 都安| 屏山县| 东乌珠穆沁旗| 宝清县| 蓬安县| 黄浦区| 姚安县| 湘乡市| 务川| 巢湖市| 新龙县| 阿勒泰市| 安庆市| 大足县| 西乡县| 礼泉县| 玛纳斯县|