验证值恰好等于0.00

时间:2012-09-28 19:36:26

标签: java comparison int double

我正在计算java中变量的值是否等于0.00,当前定义为大小数。

I have tried a variety of ways to do this including:
tempListPrice.getAmount() == 0.00;

tempListPrice.getAmount().equals(0.00);

public static final zeroed = 0.00
tempListPrice.getAmount().equals(zeroed); 

请记住,我已经做了很多谷歌搜索,试图找到一种简单的方法来比较它。如何比较tempListPrice的值,看它是否等于0.00,之前定义为big decimal datatype

我该怎么做? (对不起,我对Java很新。)

由于

3 个答案:

答案 0 :(得分:8)

好的,经过进一步的研究,你会想要平等或比较。你可能想要

tempListPrice.getAmount().compareTo(BigDecimal.ZERO);

tempListPrice.getAmount().equals(BigDecimal.ZERO);

但老实说,需要决定哪个更符合您程序的语义。请记住,这很棘手的原因是因为浮点数实际上并不具有完全相等的概念,它们本质上是模糊的,近似实体。您需要仔细检查您的代码,以确保它符合您的具体情况。

无论如何,来自Javadoc的以下几点应足以让您做出决定:

  

(equals)将此BigDecimal与指定的Object进行相等性比较。与compareTo不同,此方法只考虑两个BigDecimal对象的值和比例相等(因此通过此方法比较时2.0不等于2.00)。

比照

  

(compareTo)将此BigDecimal与指定的BigDecimal进行比较。这个方法认为两个值相等但具有不同比例(如2.0和2.00)的BigDecimal对象是相同的。优选地为六个布尔比较运算符(<,==,>,> =,!=,< =)中的每一个提供单独的方法。建议用于执行这些比较的习惯用法是:(x.compareTo(y)0),其中六个比较运算符之一。

答案 1 :(得分:2)

BigDecimal val = new BigDecimal("0.00");

BigDecimal test = new BigDecimal("0.00");

boolean isEqual = val.equals(test);

System.out.println("val " + val.toString() + " test " + test + " comp = " + isEqual);

输出

val 0.00 test 0.00 comp = true

BigDecimal val = new BigDecimal("0.000");

BigDecimal test = new BigDecimal("0.00");

boolean isEqual = val.equals(test);

System.out.println("val " + val.toString() + " test " + test + " comp = " + isEqual);

输出

val 0.000 test 0.00 comp = false

答案 2 :(得分:0)

如先前的答案所述,您需要确保所描述的方法符合您的要求。如果,如变量名所暗示的,您将货币金额与零进行比较,则可以选择将金额存储为两个int变量,如下所示(假设为美元,但可以是任何其他货币):

public boolean isZero (int dollars, int cents) {
    return (dollars == 0 && cents == 0);
}

简而言之,是您的目的所需的BigDecimal变量吗?