297

BigDecimal如果值大于零,我该如何比较?

4

7 回答 7

474

它很简单:

if (value.compareTo(BigDecimal.ZERO) > 0)

文档compareTo实际上指定它将返回 -1、0 或 1,但更通用的Comparable<T>.compareTo方法仅保证在适当的三种情况下小于零、零或大于零 - 所以我通常只坚持这种比较。

于 2010-11-12T12:21:14.983 回答
199

可能的更好方法

if (value.signum() > 0)

signum返回 -1、0 或 1,因为此 BigDecimal 的值为负数、零或正数。

于 2011-10-19T18:36:59.197 回答
11

使用compareTo()类中内置的函数。

于 2010-11-12T12:21:15.393 回答
9

使用该方法更安全compareTo()

    BigDecimal a = new BigDecimal(10);
    BigDecimal b = BigDecimal.ZERO;

    System.out.println(" result ==> " + a.compareTo(b));

控制台打印

    result ==> 1

compareTo()返回

  • 1 如果 a 大于 b
  • -1 如果 b 小于 b
  • 0 如果 a 等于 b

现在对于您的问题,您可以使用

if (value.compareTo(BigDecimal.ZERO) > 0)

或者

if (value.compareTo(new BigDecimal(0)) > 0)

我希望它对你有所帮助。

于 2020-06-05T22:12:58.580 回答
0

当您想检查它是否大于零时,在 BigDecimal 对象上使用“.intValue()”是不正确的。剩下的唯一选择是“.compareTo()”方法。

于 2018-04-22T17:00:10.750 回答
-1

这适用于Kotlin

值 > BigDecimal.ZERO

于 2020-11-04T03:28:19.693 回答
-4
 BigDecimal obj = new BigDecimal("100");
 if(obj.intValue()>0)
    System.out.println("yes");
于 2018-02-16T11:53:42.373 回答