2012-09-28 66 views
2

我期待來計算,如果在Java中的變量的值等於它目前被定義爲一個大小數0.00。驗證值正好等於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); 

請記住,我已經做了google搜索,試圖找到一個簡單的方法來比較這的相當多。如何比較tempListPrice的值以查看它是否等於0.00,前面定義爲big decimal datatype

我如何做到這一點? (對不起,我對Java很陌生)。

感謝

+1

你的.getAmount()方法返回什麼? –

+0

你期望'0.00'與'0.0'不同嗎? –

回答

8

好吧,在進一步的研究你將要達到或的compareTo。你可能想

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

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

但說實話需要決定哪個更符合你的程序的語義。請記住,這很棘手的原因是因爲浮動實際上並沒有完全相等的概念,它們本質上是模糊的,近似的實體。您需要仔細檢查您的代碼,以確保這對您的情況有效。

無論如何,從的Javadoc以下幾點應該足夠你來決定:

(等於)與平等指定的對象比較此BigDecimal。與compareTo不同,此方法僅在兩個BigDecimal對象的值和比例相等時才認爲相等(因此,與此方法進行比較時,2.0不等於2.00)。

比照

(compareTo)將此BigDecimal與指定的BigDecimal進行比較。兩個值相等但具有不同比例的BigDecimal對象(如2.0和2.00)被這種方法視爲相等。此方法優先於六個布爾比較運算符(<,==,>,> =,!=,< =)中的每一個的單獨方法。執行這些比較的建議習慣用法是:(x.compareTo(y)0),其中是六個比較運算符之一。

+0

傑出的幫助。謝謝Djechlin! – CodeTalk

1
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試驗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試驗0.00排版=假

0

如現有答案已經注意到,你需要確定方法de劃寫滿足您的要求。如果作爲變量名所暗示的,你是比較的貨幣金額爲零,另一種可能是存儲量兩個int變量,如下(假設美元,但可以是任何其它貨幣):

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

在簡而言之,是您的目的所必需的BigDecimal變量?