BigInteger和BigDecimal

高精度運算:BigInteger和BigDecimal(處理大數(shù)據(jù),當(dāng)數(shù)據(jù)范圍超出基本數(shù)據(jù)類型最大范圍時可用)

在Java中有兩個類BigInteger和BigDecimal分別表示大整數(shù)類和大浮點數(shù)類,至于兩個類的對象能表示最大范圍不清楚,理論上能夠表示無,無限大的數(shù),只要計算機內(nèi)存足夠大。

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

1)BigInteger

BigInteger類型的數(shù)字范圍較 Integer 類型的數(shù)字范圍要大得多。我們都知道 Integer 是 Int 的包裝類,int 的最大值為 231-1,如果要計算更大的數(shù)字,使用Integer 數(shù)據(jù)類型就無法實現(xiàn)了,所以 Java 中提供了BigInteger 類來處理更大的數(shù)字。 BigInteger 支持任意精度的整數(shù),也就是說在運算中 BigInteger 類型可以準(zhǔn)確地表示任何大小的整數(shù)值而不會丟失任何信息
#基本操作

BigInteger的運算都沒有對原值進(jìn)行操作,而是返回一個新的BigInteger對象,1.valueOf(parament); 將參數(shù)轉(zhuǎn)換為制定的類型

比如 int a=3;

BigInteger b=BigInteger.valueOf(a);//b=3

String s=”12345”;

BigInteger c=BigInteger.valueOf(s);//c=12345

2.add(); 大整數(shù)相加

BigInteger a=new BigInteger(“23”);

BigInteger b=new BigInteger(“34”);

a.?add(b);//57

3.subtract(); 相減

4.multiply(); 相乘

5.divide();?相除取整

6.remainder(); 取余

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

8.gcd();?最大公約數(shù)

9.abs(); 絕對值

10.negate(); 取反數(shù)

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

12.max(); min();

13.compareTo()兩者比較

基本常量(3個):

A=BigInteger.ONE?1

B=BigInteger.TEN?10

C=BigInteger.ZERO?0

//鍵盤讀入

Scanner cin=new Scanner(System.in);// 讀入

BigInteger m=scanner.BigInteger();

#進(jìn)制轉(zhuǎn)換

進(jìn)制轉(zhuǎn)換

//類型轉(zhuǎn)換(返回類型如下)

類型轉(zhuǎn)換


2)BigDecimal

在日常開發(fā)中我們經(jīng)常會碰到小數(shù)計算,而小數(shù)直接計算的話會出現(xiàn)一些小小的錯誤,如下:

System.out.println(1.01 + 2.02);

理想輸出3.03,實際上輸出的是3.0300000000000002。這是因為不論是float 還是double都是浮點數(shù),而計算機是二進(jìn)制的,浮點數(shù)會失去一定的精確度。有沒有不失精度的辦法呢?這里就要用到BigDecimal了。

java的float只能用來進(jìn)行科學(xué)計算或工程計算,在大多數(shù)的商業(yè)計算中,一般采用java.math.BigDecimal類來進(jìn)行精確計算

基本方法如BigInteger,其他用法如下:

#使用BigDecimal實現(xiàn)四舍五入(支持float和double類型)

#保留有效數(shù)字

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容