Java 验证值是否正好等于0.00

Java 验证值是否正好等于0.00,java,comparison,int,double,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); 请记住,我已经在谷歌上

我想计算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
,该值在前面被定义为
大十进制数据类型

我该怎么做?(对不起,我对Java很陌生)


谢谢

好的,在进一步研究后,你会想要相等或比较。你可能想要

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

但老实说,我们需要决定哪个更适合您的程序的语义。请记住,这是一个棘手的原因,因为浮点数实际上没有完全相等的概念,它们本质上是模糊的近似实体。您需要仔细检查代码,以确保其适用于您的环境

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

(等于)将此BigDecimal与指定的对象进行相等比较。与compareTo不同,此方法仅当两个BigDecimal对象的值和比例相等时才认为它们相等(因此,使用此方法进行比较时,2.0不等于2.00)

比照

(compareTo)将此BigDecimal与指定的BigDecimal进行比较。此方法认为两个值相等但比例不同(如2.0和2.00)的BigDecimal对象相等。对于六个布尔比较运算符(,>=,!=,)中的每一个,此方法优先于单独的方法, 输出

val 0.00测试0.00补偿=真

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

正如前面的答案所指出的,您需要确保所描述的方法满足您的要求。如果如变量名称所示,您将货币金额与零进行比较,另一种方法可能是将金额存储为两个int变量,如下所示(假设美元,但可以是任何其他货币):


简而言之,BigDecimal变量对于您的目的是必要的吗?

您的.getAmount()方法返回什么?您是否希望
0.00
0.0
不同?非常感谢Djechlin!
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);
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);
public boolean isZero (int dollars, int cents) {
    return (dollars == 0 && cents == 0);
}