天天看點

JAVA大數處理(BigInteger,BigDecimal)

原文連結

Java中有兩個類BigInteger和BigDecimal分别表示大整數類和大浮點數類。

這兩個類都在java.math.*包中,是以每次必須在開頭處引用該包。

1.valueOf(parament);//将參數轉換為制定的類型

2.add(); //大整數相加

3.subtract(); //相減

4.multiply(); //相乘

5.divide(); //相除取整

6.remainder(); //取餘

7.pow(); //a.pow(b)=a^b

8.gcd(); //最大公約數

9.abs(); //絕對值

10.negate(); //取反數

11.mod(); //a.mod(b)=a%b=a.remainder(b);

12.max(); min();

13.public int comareTo();

14.boolean equals();//是否相等

15.//BigInteger構造函數:

BigInteger(String val);

//将指定字元串轉換為十進制表示形式;

BigInteger(String val,int radix);

//将指定基數的 BigInteger 的字元串表示形式轉換為 BigInteger

A=BigInteger.ONE 1

B=BigInteger.TEN 10

C=BigInteger.ZERO 0

用Scanner類定義對象進行控制台讀入,Scanner類在java.util.*包中

具體解釋:

1.valueOf(parament); 将參數轉換為制定的類型

比如 int a=3;

BigInteger b=BigInteger.valueOf(a);

則b=3;

String s=”12345”;

BigInteger c=BigInteger.valueOf(s);

則c=12345;

2.add(); 大整數相加

BigInteger a=new BigInteger(“23”);

BigInteger b=new BigInteger(“34”);

a.add(b);

3.subtract(); 相減

4.multiply(); 相乘

5.divide(); 相除取整

6.remainder(); 取餘

7.pow(); a.pow(b)=a^b

8.gcd(); 最大公約數

9.abs(); 絕對值

10.negate(); 取反數

11.mod(); a.mod(b)=a%b=a.remainder(b);

傳回-1,0或1,分别為BigInteger在數字上小于,等于,或大于值val。

14.boolean equals(); 是否相等

15.BigInteger構造函數:

一般用到以下兩種:

将指定字元串轉換為十進制表示形式;

将指定基數的 BigInteger 的字元串表示形式轉換為 BigInteger

補充:

a=a.pow(b); //a = a的b次方

a=a.stripTrailingZeros(); //去掉後導0

d=a.toPlainString(); //不讓其變成科學計數法的表示法,變成一般的小數表示

if(d.charAt(0)==’0’) d=d.substring(1); //與前導的字元串比較 ??

if(s.startsWith(“0.”)) s=s.substring(1);//與前導的字元串比較 ??

and(); // 例如a.and(b),計算a&b

doubleValue(); //轉化為double類型

longValue(); //轉化為long類型

floatValue(); // 轉化為float類型

intValue(); //轉化為int類型

divideAndRemainder(BigInteger val)

//傳回包含 (this / val) 後跟 (this % val) 的兩個 BigInteger 的數組。

boolean isProbablePrime(BigInteger n) //判斷大數是否為素數

modPow(BigInteger n, BigInteger mod) //計算this^n % mod

nextProbablePrime(BigInteger n) //傳回比大數n大的為素數的數

not() //計算 ~this

or(BigInteger a) //計算this|a

xor(BigInteger val) //傳回其值為 (this ^ val) 的 BigInteger。

probablePrime(int bitLength, Random rnd)

//傳回有可能是素數的、具有指定長度的正 BigInteger。

shiftLeft(int n) //傳回其值為 (this << n) 的 BigInteger。

shiftRight(int n) //傳回其值為 (this >> n) 的 BigInteger。