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