验证值恰好等于0.00

Cod*_*alk 2 java double int comparison

我想要计算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); 
Run Code Online (Sandbox Code Playgroud)

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

我该怎么做呢?(对不起,我是Java的新手).

谢谢

dje*_*lin 8

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

tempListPrice.getAmount().compareTo(BigDecimal.ZERO);
Run Code Online (Sandbox Code Playgroud)

要么

tempListPrice.getAmount().equals(BigDecimal.ZERO);
Run Code Online (Sandbox Code Playgroud)

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

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

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

比照

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