BigDecimal

一、比較大小

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

  1. BigDecimal b = new BigDecimal("2.225667").setScale(2, BigDecimal.ROUND_DOWN);

  2. System.out.println(b);//2.22 直接去掉多余的位數(shù)

2. ROUND_UP

  1. BigDecimal c = new BigDecimal("2.224667").setScale(2, BigDecimal.ROUND_UP);

  2. System.out.println(c);//2.23 跟上面相反,進(jìn)位處理

3. ROUND_CEILING(變大)

天花板(向上),正數(shù)進(jìn)位向上,負(fù)數(shù)舍位向上

  1. BigDecimal f = new BigDecimal("2.224667").setScale(2, BigDecimal.ROUND_CEILING);

  2. System.out.println(f);//2.23 如果是正數(shù),相當(dāng)于BigDecimal.ROUND_UP

  3. BigDecimal g = new BigDecimal("-2.225667").setScale(2, BigDecimal.ROUND_CEILING);

  4. System.out.println(g);//-2.22 如果是負(fù)數(shù),相當(dāng)于BigDecimal.ROUND_DOWN

4. ROUND_FLOOR(變?。?/strong>

地板(向下),正數(shù)舍位向下,負(fù)數(shù)進(jìn)位向下

  1. BigDecimal h = new BigDecimal("2.225667").setScale(2, BigDecimal.ROUND_FLOOR);

  2. System.out.println(h);//2.22 如果是正數(shù),相當(dāng)于BigDecimal.ROUND_DOWN

  3. BigDecimal i = new BigDecimal("-2.224667").setScale(2, BigDecimal.ROUND_FLOOR);

  4. System.out.println(i);//-2.23 如果是負(fù)數(shù),相當(dāng)于BigDecimal.ROUND_UP

5. ROUND_HALF_UP

  1. BigDecimal d = new BigDecimal("2.225").setScale(2, BigDecimal.ROUND_HALF_UP);

  2. System.out.println("ROUND_HALF_UP"+d); //2.23 四舍五入(若舍棄部分>=.5,就進(jìn)位)

6. ROUND_HALF_DOWN

  1. BigDecimal e = new BigDecimal("2.225").setScale(2, BigDecimal.ROUND_HALF_DOWN);

  2. System.out.println("ROUND_HALF_DOWN"+e);//2.22 四舍五入(若舍棄部分>.5,就進(jìn)位)

7. ROUND_HALF_EVEN

  1. BigDecimal j = new BigDecimal("2.225").setScale(2, BigDecimal.ROUND_HALF_EVEN);

  2. System.out.println(j);//2.22 如果舍棄部分左邊的數(shù)字為偶數(shù),則作 ROUND_HALF_DOWN

  3. BigDecimal k = new BigDecimal("2.215").setScale(2, BigDecimal.ROUND_HALF_EVEN);

  4. System.out.println(k);//2.22 如果舍棄部分左邊的數(shù)字為奇數(shù),則作 ROUND_HALF_UP

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

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

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