使用以下方法比较存在问题:
1
b.equals(BigDecimal.ZERO);
查看源代码发现Bigdecimal的equals方法不仅仅比较值的大小是否相等,首先比较的是scale(scale是bigdecimal的保留小数点位数,比如new Bigdecimal("1.001")
scale为3),也就是说,不但值的大小要相等,保留位数也要相等,equals才能返回true。Bigdecimal b = new Bigdecimal("0")
和Bigdecimal c = new Bigdecimal("0.0")
,用equals比较,返回就是false。
可以用以下方法比较:
1
2
// 返回true,则等于0,返回false,则不等于0
b.compareTo(BigDecimal.ZERO) == 0
还可以用compareTo方法比较两个Bigdecimal数值的大小
1
2
3
4
a.compareTo(b)
// a<b, 返回-1
// a=b,返回0
// a>b, 返回1