2012-10-22 40 views
11

में उपयोग कर रहा हूं, मैं डेटाबेस से कुछ डेटा एकत्र कर रहा हूं और कुछ आंकड़े प्राप्त करने के लिए उन्हें एक साथ जोड़ रहा हूं, लेकिन जब से मैं अपने कुछ डेटा का बैकडेट करता हूं तो गणना की गई राशि कभी-कभी NaN (एक नहीं संख्या) मैं एक वाक्य बनाना चाहता हूं जो कहता है कि (संख्या नहीं) तो इस डेटा को मेरी तालिका से बाहर कर दें।NaN के लिए जांच कर रहा है और इसे

मैं कैसे परीक्षण करूं कि डेटा (इस मामले में डबल) NaN है?

+0

क्या आप दशमलव के बारे में भी परवाह करते हैं? – Metalhead

उत्तर

32

स्थिर तरीके Float.isNaN(float) और Double.isNaN(double) हैं जिनका उपयोग आप कर सकते हैं।

double x = ... // whatever calculation you do 

if (Double.isNaN(x)) { 
    ... 
} 
+3

'x' किसी संख्या का कोई संख्यात्मक प्रकार या रैपर हो सकता है और यह अभी भी काम करेगा। यानी इसे 'डबल' नहीं होना चाहिए। –

+0

फ़्लोट.इसनान (x) –

+0

भी है एनएएनएन (x) –

-5

यह आपके लिए काम करेगा।

if(number == Float.NaN) 
+8

यह हमेशा NaN के रूप में गलत होगा! = NaN –

4

आप NaN के दो तरीकों से परीक्षण कर सकते हैं। आप समारोह

Double.isNaN(x) 

में बनाया का उपयोग करें या जाँच इस जो है

if (x != x) 

प्रदान की एक्स एक double या एक float

+1

कोड का दूसरा भाग केवल तभी अच्छा है जब एक्स 'डबल' है। अगर किसी कारण से कोड 'डबल' का उपयोग करता है तो यह संदर्भ की तुलना समाप्त कर देगा। – nhahtdh

+0

यह कैसे काम करता है? वह एक्स डबल है, लेकिन संख्या नहीं है? –

+0

@ वाश: नाएन बहुत खास है, शायद यह एकमात्र चीज है कि जब तुलनात्मक रूप से तुलना नहीं की जाती तो वह सच हो जाएगी। – nhahtdh