Java中BigDecimal 類的建立物件方法介紹,常用方法和8種舍入模式

一、BigDecimal 類的介紹

* 因為計算機無法精確表示浮點數,所以在進行數字運算時,如果有double或float型別的浮點數 參與計算,容易出現計算不準確的情況。* 在一些對精度要求很高的系統中,需要使用 “BigDecimal” 類來進行精確執行

二、建立BigDecimal物件的方式

1。使用構造方法建立物件

BigDecimal(String val) :使用 String型別的數字 作為引數

BigDecimal b1=new BigDecimal(“0。1”);System。out。println(b1); //0。1

BigDecimal(double val) :使用double型別的數字作為引數(不推薦,容易丟精度)

BigDecimal b2=new BigDecimal(0。1);System。out。println(b2); //0。1000000000000000055511151231257827021181583404541015625

2。使用靜態方法建立物件

BigDecimal.valueOf(double val)

double d=0。1;BigDecimal d1=BigDecimal。valueOf(d);System。out。println(d1);

Java中BigDecimal 類的建立物件方法介紹,常用方法和8種舍入模式

三、BigDecimal 類的常用方法

public BigDecimal add(另一個BigDecimal物件) :加法

BigDecimal a=new BigDecimal(“0。1”);BigDecimal b=new BigDecimal(“0。2”);BigDecimal c=a。add(b); //0。3

public BigDecimal subtract (另一個BigDecimal物件) : 減法

BigDecimal a=new BigDecimal(“0。1”);BigDecimal b=new BigDecimal(“0。2”);BigDecimal c1=a。subtract(b); //-0。1

public BigDecimal multiply (另一個BigDecimal物件) : 乘法

BigDecimal a=new BigDecimal(“0。1”);BigDecimal b=new BigDecimal(“0。2”);BigDecimal c2=a。multiply(b); //0。02

public BigDecimal divide (另一個BigDecimal物件) :除法

BigDecimal a=new BigDecimal(“0。1”);BigDecimal b=new BigDecimal(“0。2”);BigDecimal c3=a。divide(b); //0。5————————————————————————————————————————————————//如果除不盡,使用另外過載的方法BigDecimal adivide=new BigDecimal(“10”);BigDecimal bdivide=new BigDecimal(“3”);//除數 保留多少位小數 舍入模式BigDecimal sum=adivide。divide(bdivide,3, RoundingMode。HALF_UP);System。out。println(sum); //3。333//RoundingMode。HALF_UP 表四捨五入

Java中BigDecimal 類的建立物件方法介紹,常用方法和8種舍入模式

Java中BigDecimal 類的建立物件方法介紹,常用方法和8種舍入模式

BigDecimal remainder( BigDecimal b ) : 對兩個BigDecimal進行取餘

BigDecimal b1=new BigDecimal(“5”);BigDecimal b2=new BigDecimal(“2”);System。out。println(b1。remainder(b2)); // 1

BigDecimal negate(BigDecimal b) : 求BigDecimal型別資料的相反數

BigDecimal n1=new BigDecimal(“5”);BigDecimal n2=n1。negate();System。out。println(n2); //-5

四、RoundingMode的8種舍入模式介紹

(1) RoundingMode UP : 舍入模式從零開始;始終在非零丟棄分數之前增加數字 (正數“變大”,負數“變小”) 如: 5。5 -> 6。0 -5。5 -> -6(2) RoundingMode DOWN : 舍入模式向零舍入; 不要在丟棄的分數之前遞增數字(即截斷) (正數“變小”,負數“變大”)如: 5。5 -> 5 -5。5 -> -5(3) RoundingMode CEILING : 圓形模式向正無窮大轉彎;如果結果為正,則表現為RoundingMode。UP ; 如果為負,表現為RoundingMode。DOWN (“全部變大”)如: 5。5 -> 6 -5。5 -> -5(4) RoundingMode FLOOR :舍入模式向負無窮大轉彎;如果結果為正,則表現為RoundingMode。DOWN ; 如果為負,表現為RoundingMode。UP (“全部變小”)如: 5。5 -> 5 -5。5 -> -6(5) RoundingMode HALF_UP : 四捨五入模式向“最近鄰居”轉彎,除非兩個鄰居都是等距的,在這種情況下是圓括弧的如果丟棄的分數為RoundingMode。UP則表示為RoundingMode。UP ; 否則,表現為RoundingMode。DOWN (“四捨五入”)如: 5。5 -> 6 -2。5 -> -3(6) RoundingMode HALF_DOWN : 四捨五入模式向“最近鄰居”轉彎,除非這兩個鄰居都是等距離的,在這種情況下,這是倒圓的如果丟棄的分數> 0。5,則表示為RoundingMode。UP ; 否則,表現為RoundingMode。DOWN (“五舍六入”)如: 5。5 -> 5 -5。5 -> -5(7) RoundingMode HALF_EVEN : “銀行家四捨五入”(目標是偶數,可以使用四捨五入,也可以適用五舍六入,具體看哪邊更接近一個偶數)如: 5。5 -> 6 -2。5 -> -2 -5。5 -> -6(8) RoundingMode UNNECESSARY :舍入模式來確定所請求的操作具有精確的結果,因此不需要舍入如果在產生不精確結果的操作上指定了舍入模式,則丟擲ArithmeticException(需要舍掉的位數不是0,就報異常 “ArithmeticException” ; 如果需要舍掉的位數是0,就返回已結舍掉的正常結果)

作者:今日頭條 KJ丶JK /CSDN-KJ。JK