Java中BigDecimal比较

来源:互联网 发布:linux 打开文件夹 编辑:程序博客网 时间:2024/05/21 20:21

对于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));


结果:

falsetruefalse000

所以:

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) //小于

原创粉丝点击