2010-06-01 80 views
21

我在對象中有兩個雙重數據元素。如何將一個double值設置爲「非值」

有時他們被設置爲一個適當的值,有時不是。當他們的值被接受的表單域沒有被填充時,我想將它們設置爲某個值,告訴我,在其餘的代碼中,表單域保留爲空。

我不能將值設置爲空,因爲這會給出錯誤,是否有某種方法可以使它們成爲'未定義'。

PS。我不僅不確定這是否可能,它可能也沒有意義。但是如果在這種情況下有一些最佳做法,我會很樂意聽到。

+0

你給我舉幾個例子 – ratty 2010-06-01 09:09:32

回答

46

兩個顯而易見的選擇:

  • 使用Double而不是double。然後您可以使用null,但您已經大幅改變了涉及的內存模式。
  • 使用「不是一個數字」(NaN)值:

    double d = 5.5; 
    System.out.println(Double.isNaN(d)); // false 
    d = Double.NaN; 
    System.out.println(Double.isNaN(d)); // true 
    

    注意,在「正常」的數字一些其他的操作可以給你NaN值以及雖然(0例如除以0)。

+1

謝謝...... NaN會解決我的目的。我不會對這些數字進行任何算術運算,這樣做會很好。 – Ankur 2010-06-01 09:20:02

+6

要小心'NaN',使用​​'=='和它們總是返回'false',即使'Double.NaN == Double.NaN'也是'false'。您必須使用'Double.isNaN(...)'來檢查'double'是不是一個數字。 – Jesper 2010-06-01 09:38:58

+0

我也經常使用「Double = null」技巧。我更喜歡NaN選項,因爲NaN可能會作爲一個值出現,並且因爲「null for unset」是Java中的常見做法。 – sleske 2010-06-01 10:31:41