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

今天參考課本寫了一個關於二進制與十進制轉換的程序,程序算法不難,但寫完後測試發現不管是二轉十仍是十轉二,對於大於21億即超過整數範圍的數不能很好的轉換。都會變成0.
參考書籍發現使用使用BigInteger能夠解決這個問題。
因而查找了下JDK,而後測試幾回終於寫成功了!
使用心得以下:

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

2,其構造方法有不少,但如今偶用到的有:html

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進制的字符串,詳細說明以下:
java

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的詳解以下:
api

 

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

輸出:less

BigInteger.ONE:1
nextProbablePrime:2
nextProbablePrime:2
BigInteger.TEN:10
BigInteger.ZERO:0
相關文章
相關標籤/搜索