有时,我们想检查bigdecimal的值是否为零。
BigDecimal为零意味着它可以存储0,0.0或0.00等数值。
所以你想检查Integer是否为零,并且精度也为零。
BigDecimal对象有一个枚举常量BigDecimal.ZERO,用来表示0值的零刻度。
使用BigDecimal.ZERO来检查对象是否为零。
如何在java中检查BigDecimal是否为零?
在java中,有多种方法来检查BigDecimal是否为零:
-
等于
-
比较
-
符号
让我们来看看这三种方法的区别
-
等价法
它用BigDecimal.ZERO检查Bigdecimal,并返回一个布尔值,如下图所示。 它不使用刻度来进行平等测试。 语法:
public boolean equals(Object x)
``
- "0".equals(BigDecimal.ZERO) returns true and there is no scale in the given object
- "0.0".equals(BigDecimal.ZERO) returns false and equals method does not check
- "0.00".equals(BigDecimal.ZERO) returns false and equals method does not use scale for equality.
Here is a BigDecimal equals check for zero or not.
```java
import java.math.BigDecimal;
public class BigDecimalTest {
public static void main(String[] args) {
BigDecimal bd = new BigDecimal(0);
System.out.println(new BigDecimal("0").equals(BigDecimal.ZERO));// true);
System.out.println(new BigDecimal("0.0").equals(BigDecimal.ZERO));// false
System.out.println(new BigDecimal("0.00").equals(BigDecimal.ZERO));// false
}
}
- compareTo方法
compareTo 方法检查零值和零刻度值,并返回0。它是无效的,而且更易读。你可以在双倍数等于0的情况下检查给返回0。 语法:
public int compareTo(BigDecimal val)
如果两个BigDecimal对象都是0,则该方法返回0,否则返回其他的整数0。
在以下所有情况下,它都返回0。
- "0".compareTo(BigDecimal.ZERO)
- "0.0".compareTo(BigDecimal.ZERO)
- "0.00".compareTo(BigDecimal.ZERO)
下面是一个示例代码
import java.math.BigDecimal;
public class BigDecimalTest {
public static void main(String[] args) {
BigDecimal bd = new BigDecimal(0);
System.out.println(new BigDecimal("0").compareTo(BigDecimal.ZERO) == 0);// true;
System.out.println(new BigDecimal("0.0").compareTo(BigDecimal.ZERO) == 0);// true
System.out.println(new BigDecimal("0.00").compareTo(BigDecimal.ZERO) == 0);// true
}
}
- Signum方法
它返回一个BigDecimal对象的符号。它不是空值安全的,会抛出NullPointerException,并且不可读。
它返回可能的值-1,0,1。
import java.math.BigDecimal;
public class BigDecimalTest {
public static void main(String[] args) {
BigDecimal bd = new BigDecimal(0);
System.out.println(new BigDecimal("0").signum() == 0);// true;
System.out.println(new BigDecimal("0.0").signum() == 0);// true;
System.out.println(new BigDecimal("0.00").signum() == 0);// true;
}
}
总结
我们可以通过多种方式来检查给定对象是否为零:
- equals不被认为是零刻度
- compareTo是安全的,可读的,并且被认为是零刻度的。
- signum是不可读的,不是安全的空值,并且被认为是零度。