java.math.BigInteger使用心得總結(轉)

來源:互聯網
上載者:User

標籤:style   blog   http   color   java   使用   os   io   

今天參考課本寫了一個關於二進位與十進位轉換的程式,程式演算法不難,但寫完後測試發現不論是二轉十還是十轉二,對於大於21億即超過整數範圍的數不能很好的轉換。都會變成0.
參考書籍發現使用使用BigInteger可以解決這個問題。
於是尋找了下JDK,然後測試幾次終於寫成功了!
使用心得如下:

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

2,其構造方法有很多,但現在偶用到的有:

BigInteger(String val)
           將 BigInteger 的十進位字串表示形式轉換為 BigInteger。
BigInteger(String val, int radix)
           將指定基數的 BigInteger 的字串表示形式轉換為 BigInteger。

如要將int型的2轉換為BigInteger型,要寫為BigInteger two=new BigInteger("2"); //注意2雙引號不能省略

3,BigInteger類類比了所有的int型數學操作,如add()==“+”,divide()==“-”等,但注意其內容進行數學運算時不能直接使用數學運算子進行運算,必須使用其內部方法。而且其運算元也必須為BigInteger型。
如:two.add(2)就是一種錯誤的操作,因為2沒有變為BigInteger型。

4,當要把計算結果輸出時應該使用.toString方法將其轉換為10進位的字串,詳細說明如下:

String toString()
           返回此 BigInteger 的十進位字串表示形式。

輸出方法:System.out.print(two.toString());

5,另外說明三個個用到的函數。   

BigInteger remainder(BigInteger val)
           返回其值為 (this % val) 的 BigInteger。
BigInteger negate()
           返回其值是 (-this) 的 BigInteger。
int        compareTo(BigInteger val)
           將此 BigInteger 與指定的 BigInteger 進行比較。

remainder用來求餘數。
negate將運算元變為相反數。
compare的詳解如下:

 

compareTo

 

public int compareTo(BigInteger val)

 

Compares this BigInteger with the specified BigInteger. This method is provided in preference to individual methods for each of the six boolean comparison operators (<, ==, >, >=, !=, <=). The suggested idiom for performing these comparisons is: (x.compareTo(y) < op> 0), where < op> is one of the six comparison operators.

 

Specified by:
compareTo in interface Comparable<BigInteger>
Parameters:
val - BigInteger to which this BigInteger is to be compared.
Returns:
-1, 0 or 1 as this BigInteger is numerically less than, equal to, or greater than val.
import java.math.BigInteger;public class BigIntegerDemo {    public static void main(String[] args) {        BigInteger big=BigInteger.ONE;        System.out.println("BigInteger.ONE:"+big);        System.out.println("nextProbablePrime:"+big.nextProbablePrime());        System.out.println("nextProbablePrime:"+big.nextProbablePrime());                big=BigInteger.TEN;        System.out.println("BigInteger.TEN:"+big);                big=BigInteger.ZERO;        System.out.println("BigInteger.ZERO:"+big);    }}
View Code

輸出:

BigInteger.ONE:1nextProbablePrime:2nextProbablePrime:2BigInteger.TEN:10BigInteger.ZERO:0

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.