Home 如何判断Bigdecimal类型变量是否等于0
Post
Cancel

如何判断Bigdecimal类型变量是否等于0

使用以下方法比较存在问题:

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
This post is licensed under CC BY 4.0 by the author.