一、比較大小
int a = bigdemical1.compareTo(bigdecimal2)
//a = -1,表示bigdemical小于bigdemical2;
//a = 0,表示bigdemical等于bigdemical2;
//a = 1,表示bigdemical大于bigdemical2;
1、BigDecimal(0.1)與new BigDecimal(”0.1″)不相等
因?yàn)?0.1 無(wú)法準(zhǔn)確地表示為 double(或者說(shuō)對(duì)于該情況,不能表示為任何有限長(zhǎng)度的二進(jìn)制小數(shù))。
另一方面,String 構(gòu)造方法是完全可預(yù)知的:寫(xiě)入 new BigDecimal(”0.1″) 將創(chuàng)建一個(gè) BigDecimal,它正好 等于預(yù)期的 0.1。因此,比較而言,通常建議優(yōu)先使用 String 構(gòu)造方法。
2、與0比較
Bigdecimal b = new Bigdecimal("0") 與 BigDecimal.ZERO 相等
二、加減乘除
//加減乘除:
BigDecimal bignum1 = new BigDecimal("10");
BigDecimal bignum2 = new BigDecimal("5");
BigDecimal bignum3 = null;
可以通過(guò)>0,<0,和==0進(jìn)行比較
//加法
bignum3 = bignum1.add(bignum2);
System.out.println("和 是:" + bignum3);
//減法
bignum3 = bignum1.subtract(bignum2);
System.out.println("差 是:" + bignum3);
//乘法
bignum3 = bignum1.multiply(bignum2);
System.out.println("積 是:" + bignum3);
//除法
bignum3 = bignum1.divide(bignum2);
System.out.println("商 是:" + bignum3);
3、四舍五入
BigDecimal num = new BigDecimal("2.225667");//一般都會(huì)這樣寫(xiě)最好
int count = num.scale();
System.out.println(count);//6 返回的是小數(shù)點(diǎn)后位數(shù)
1. ROUND_DOWN
BigDecimal b = new BigDecimal("2.225667").setScale(2, BigDecimal.ROUND_DOWN);
System.out.println(b);//2.22 直接去掉多余的位數(shù)
2. ROUND_UP
BigDecimal c = new BigDecimal("2.224667").setScale(2, BigDecimal.ROUND_UP);
System.out.println(c);//2.23 跟上面相反,進(jìn)位處理
3. ROUND_CEILING(變大)
天花板(向上),正數(shù)進(jìn)位向上,負(fù)數(shù)舍位向上
BigDecimal f = new BigDecimal("2.224667").setScale(2, BigDecimal.ROUND_CEILING);
System.out.println(f);//2.23 如果是正數(shù),相當(dāng)于BigDecimal.ROUND_UP
BigDecimal g = new BigDecimal("-2.225667").setScale(2, BigDecimal.ROUND_CEILING);
System.out.println(g);//-2.22 如果是負(fù)數(shù),相當(dāng)于BigDecimal.ROUND_DOWN
4. ROUND_FLOOR(變?。?/strong>
地板(向下),正數(shù)舍位向下,負(fù)數(shù)進(jìn)位向下
BigDecimal h = new BigDecimal("2.225667").setScale(2, BigDecimal.ROUND_FLOOR);
System.out.println(h);//2.22 如果是正數(shù),相當(dāng)于BigDecimal.ROUND_DOWN
BigDecimal i = new BigDecimal("-2.224667").setScale(2, BigDecimal.ROUND_FLOOR);
System.out.println(i);//-2.23 如果是負(fù)數(shù),相當(dāng)于BigDecimal.ROUND_UP
5. ROUND_HALF_UP
BigDecimal d = new BigDecimal("2.225").setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println("ROUND_HALF_UP"+d); //2.23 四舍五入(若舍棄部分>=.5,就進(jìn)位)
6. ROUND_HALF_DOWN
BigDecimal e = new BigDecimal("2.225").setScale(2, BigDecimal.ROUND_HALF_DOWN);
System.out.println("ROUND_HALF_DOWN"+e);//2.22 四舍五入(若舍棄部分>.5,就進(jìn)位)
7. ROUND_HALF_EVEN
BigDecimal j = new BigDecimal("2.225").setScale(2, BigDecimal.ROUND_HALF_EVEN);
System.out.println(j);//2.22 如果舍棄部分左邊的數(shù)字為偶數(shù),則作 ROUND_HALF_DOWN
BigDecimal k = new BigDecimal("2.215").setScale(2, BigDecimal.ROUND_HALF_EVEN);
System.out.println(k);//2.22 如果舍棄部分左邊的數(shù)字為奇數(shù),則作 ROUND_HALF_UP