最近項(xiàng)目里面用bigdecimal來(lái)進(jìn)行計(jì)算,寫下這個(gè)筆記,直接上代碼
比較函數(shù) a.compareTo(b) 結(jié)果如下:
小于:-1?
?等于:0
?大于:1
@Test
public voidtestBigDeciaml(){
//兩個(gè)數(shù)進(jìn)行比較
BigDecimal t1 =newBigDecimal(12);
BigDecimal t2 =newBigDecimal(34);
System.out.println("小于"+t1.compareTo(t2));
BigDecimal t3 =newBigDecimal(34);
BigDecimal t4 =newBigDecimal(34);
System.out.println("等于"+t3.compareTo(t4));
BigDecimal t5 =newBigDecimal(56);
BigDecimal t6 =newBigDecimal(34);
System.out.println("大于"+t5.compareTo(t6));
//兩個(gè)數(shù)相除除不盡 會(huì)拋出異常
BigDecimal t7 =newBigDecimal("2.00");
BigDecimal t8 =newBigDecimal("1.10");
//java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
//? System.out.println("除不盡拋出異常:=="+t1.divide(t2));
//拋出異常用一下方法解決
System.out.println("除不盡解決方法:"+t7.divide(t8,0,BigDecimal.ROUND_DOWN));
}
兩個(gè)數(shù)相除
divide(BigDecimal divisor,intscale,introundingMode)
intscale:相除之后結(jié)果保留位數(shù)
introundingMode:相除之后結(jié)果小數(shù)時(shí)候按什么樣式取出結(jié)果這個(gè)是枚舉
ROUND_UP:向上取整
ROUND_DOWN : 向下取模 直接去掉小數(shù)后面數(shù)據(jù)
ROUND_CEILING
ROUND_FLOOR
ROUND_HALF_UP
ROUND_HALF_DOWN
ROUND_HALF_EVEN
ROUND_UNNECESSARY
java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. 除不盡原因 可以參考一下