2016-02-22 9 views
5

मैं यह कहने की कोशिश कर रहा हूं कि मेरा डबल NaN है। कोड स्निपेट है:जावा आर्ट डबल डबल NaN

private Double calculateIt(String input){...} 

assertEquals(Double.NaN, calculateIt("input text")); 

कोड संकलन नहीं करता है, Double.NaN आदिम

public static final double NaN = 0.0d/0.0; 

के रूप में परिभाषित किया गया है अभिकथन काम मैं एक डबल वस्तु के साथ NaN लपेट बनाने के लिए।

assertEquals(new Double(Double.NaN), calculateIt("input text")); 

क्या ऐसा करने का कोई छोटा तरीका है?

+2

बेहतर राय का विषय है –

उत्तर

6

आप इस्तेमाल कर सकते हैं:

boolean isNan = Double.isNaN(calculateIt("input text")); 
assertTrue(isNan); 

Double.NaN मूल्यों == साथ तुलना नहीं की जा सकती है (Double.NaN == Double.NaNfalse वापस आ जाएगी), क्योंकि NaN एक विशेष एक के रूप में माना जाता है।

और जानकारी:

1

assertEquals(Double.NaN, calculateIt(...), 0.0)assertEquals(double, double, double)

या

Hamcrest साथ

assertThat(calculateIt(...), isNan()) साथ। इस

क्या कर रही सबसे अच्छा इरादे से पता चलता की

बेहतर तरीका? आप किस चीज को पढ़ सकते हैं और आसानी से देख सकते हैं कि विधि क्या जांच रही है?

0

छोटा Double.valueOf("NaN") है या एक स्थिर आयात valueOf("NaN") के साथ, लेकिन यह मूल रूप से आपके जैसा ही है।

1

आप निम्न की कोशिश कर सकते:

assertTrue(Double.compare(Double.NaN, calculateIt("input text"))); 

आशा यह आप में मदद की।

संबंधित मुद्दे