Posted on 2006-12-05 10:20
Yemoo'S Java Blog 閱讀(16432)
評論(4) 編輯 收藏
今天參考課本寫了一個關于二進制與十進制轉換的程序,程序算法不難,但寫完后測試發現不論是二轉十還是十轉二,對于大于21億即超過整數范圍的數不能很好的轉換。都會變成0.
參考書籍發現使用使用BigInteger可以解決這個問題。
于是查找了下JDK,然后測試幾次終于寫成功了!
使用心得如下:
1,BigInteger屬于java.math.BigInteger,因此在每次使用前都要import 這個類。偶開始就忘記import了,于是總提示找不到提示符。
2,其構造方法有很多,但現在偶用到的有:
如要將int型的2轉換為BigInteger型,要寫為BigInteger two=new BigInteger("2"); //
注意2雙引號不能省略
3,BigInteger類模擬了所有的int型數學操作,如add()==“+”,divide()==“-”等,但注意其內容進行數學運算時不能直接使用數學運算符進行運算,必須使用其內部方法。而且其操作數也必須為BigInteger型。
如:two.add(2)就是一種錯誤的操作,因為2沒有變為BigInteger型。
4,當要把計算結果輸出時應該使用.toString方法將其轉換為10進制的字符串,詳細說明如下:
輸出方法:System.out.print(two.toString());
5,另外說明三個個用到的函數。???
remainder用來求余數。
negate將操作數變為相反數。
compare的詳解如下:
compareTo
public int compareTo(BigInteger?val)
- 將此 BigInteger 與指定的 BigInteger 進行比較。對于針對六個布爾比較運算符 (<, ==, >, >=, !=, <=) 中的每一個運算符的各個方法,優先提供此方法。執行這些比較的建議語句是:(x.compareTo(y) <op> 0),其中 <op> 是六個比較運算符之一。
- 指定者:
- 接口
Comparable<BigInteger>
中的 compareTo
- 參數:
val
- 將此 BigInteger 與之比較的 BigInteger。 - 返回:
- 當此 BigInteger 在數值上小于、等于或大于 val 時,返回 -1,0,或 1。