1. 程式人生 > >BigDecimal資料型別(初始化,加減乘除,基本操作)

BigDecimal資料型別(初始化,加減乘除,基本操作)

BigDecimal為大資料型別,更精準的計算

1.初始化

1.1 字串做引數
BigDecimal a =new BigDecimal(“1.22”);
doublevalue:1.2199999999999999733546474089962430298328399658203125
1.2 數字做引數
BigDecimal a =new BigDecimal(1.22);
construct with a String value: 1.22
注意1:String 構造方法是完全可預知的:寫入 newBigDecimal(“0.1”) 將建立一個 BigDecimal,它正好等於預期的 0.1。因此,比較而言,通常建議優先使用String構造方法。

注意2:當double必須用作BigDecimal的源時,請注意,此構造方法提供了一個準確轉換;它不提供與以下操作相同的結果:先使用Double.toString(double)方法,然後使用BigDecimal(String)構造方法,將double轉換為String。要獲取該結果,請使用static valueOf(double)方法

2.加減乘除操作

2.1加法運算
a.add(b)

 BigDecimal a =new BigDecimal("1.22");
 BigDecimal b =new BigDecimal("2.22");
 a=a.add(b);
 System.out.println("aplus b is : "
+ a);

2.2減法運算
a.sub(b)

 BigDecimal a =new BigDecimal("13.22");
 BigDecimal b =new BigDecimal("2.22");
 a=a.sub(b);
 System.out.println(a);

2.3乘法運算
a.multiply(b)

 BigDecimal a =new BigDecimal("13.22");
 BigDecimal b =new BigDecimal("2.22");
 a=a.multiply(b);
 System.out.println(a);

2.4除法運算
a=a.divide(b,2)
a=a.divide(b,2,BigDecimal.’BigDecimal.舍入方式’)
2為保留小數點位數
BigDecimal.ROUND_HALF_EVEN為小數舍入方式,預設四捨五入

 BigDecimal a =new BigDecimal("13.22");
 BigDecimal b =new BigDecimal("2.22");
 a=a.divide(b,2);
 System.out.println(a);

通過BigDecimal的divide方法進行除法時當不整除,出現無限迴圈小數時,就會拋異常 解決方法:給divide方法設定精度及保留幾位小數

舍入方式

BigDecimal列舉常量用法摘要 :
CEILING
向正無限大方向舍入的舍入模式。
DOWN
向零方向舍入的舍入模式。
FLOOR
向負無限大方向舍入的舍入模式。
HALF_DOWN
向最接近數字方向舍入的舍入模式,如果與兩個相鄰數字的距離相等,則向下舍入。
HALF_EVEN
向最接近數字方向舍入的舍入模式,如果與兩個相鄰數字的距離相等,則向相鄰的偶數舍入。
HALF_UP
向最接近數字方向舍入的舍入模式,如果與兩個相鄰數字的距離相等,則向上舍入。
UNNECESSARY
用於斷言請求的操作具有精確結果的舍入模式,因此不需要舍入。
UP
遠離零方向舍入的舍入模式。

3.取最大值,最小值,絕對值,相反數

3.1 a.max (b) //比較取最大值

3.2 a.min(b) //比較取最小值

3.3 a.abs()//取最絕對值

3.4 a.negate()//取相反數