在Java中检查bigdecimal的值是否为零的教程

760 阅读2分钟

有时,我们想检查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是不可读的,不是安全的空值,并且被认为是零度。