我正在计算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很新。)
由于
答案 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变量吗?