Java中BigDecimal比較

對於BigDecimal的零值判斷

可以有三種辦法

1、==

2、equals 不但值得大小要相等,保留位數也要相等

3、compareTo 比較是否等於0,返回true則等於0,返回false,則不等於0


例子:

        BigDecimal b1 = new BigDecimal("0");
        BigDecimal b2 = new BigDecimal("0.0");
        BigDecimal b3 = BigDecimal.ZERO;
        System.out.println(b1.equals(b2));
        System.out.println(b1.equals(b3));
        System.out.println(b2.equals(b3));
        System.out.println(b1.compareTo(b2));
        System.out.println(b1.compareTo(b3));
        System.out.println(b3.compareTo(b1));


結果:

false
true
false
0
0
0

所以:

if(b==null||BigDecimal.ZERO.compareTo(b)==0){
doSomething…
}


查看jdk源碼可以得出

    public int compareTo(BigDecimal val) {
        // Quick path for equal scale and non-inflated case.
        if (scale == val.scale) {
            long xs = intCompact;
            long ys = val.intCompact;
            if (xs != INFLATED && ys != INFLATED)
                return xs != ys ? ((xs > ys) ? 1 : -1) : 0;
        }
        int xsign = this.signum();
        int ysign = val.signum();
        if (xsign != ysign)
            return (xsign > ysign) ? 1 : -1;
        if (xsign == 0)
            return 0;
        int cmp = compareMagnitude(val);
        return (xsign > 0) ? cmp : -cmp;
    }

int i=big_decimal.compareTo(BigDecimal.Zero); //和0,Zero比較
if(i==0) //等於
if(i==1) //大於
if(i==-1) //小於
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章