2010-06-01 4 views
21

पर डबल मान कैसे सेट करते हैं मेरे पास किसी ऑब्जेक्ट में दो डबल डेटा तत्व हैं।आप "गैर-मूल्य"

कभी-कभी वे उचित मूल्य के साथ सेट होते हैं और कभी-कभी नहीं। जब फॉर्म फ़ील्ड से वे मूल्य प्राप्त करते हैं तो वह भर नहीं जाता है, मैं उन्हें कुछ मूल्य पर सेट करना चाहता हूं जो मुझे बताता है कि शेष फ़ील्ड के दौरान फॉर्म फ़ील्ड खाली छोड़ दी गई थीं।

मैं मूल्यों को शून्य में सेट नहीं कर सकता क्योंकि यह एक त्रुटि देता है, क्या कोई तरीका है कि मैं उन्हें 'अपरिभाषित' कर सकता हूं।

पीएस। न केवल मुझे यकीन है कि यह संभव है, यह भी समझ में नहीं आता है। लेकिन अगर ऐसी स्थिति के लिए कुछ बेहतरीन अभ्यास है तो मैं इसे सुनना चाहूंगा।

+0

क्या आप कुछ उदाहरण देते हैं – ratty

उत्तर

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

+6

'NaN' से सावधान रहें कि उनके साथ '==' का उपयोग करके हमेशा 'झूठा' लौटाता है, यहां तक ​​कि 'Double.NaN == Double.NaN'' false' है। एक 'डबल' संख्या नहीं है या नहीं, यह जांचने के लिए आपको 'Double.isNaN (...)' का उपयोग करना होगा। – Jesper

+0

मैं आमतौर पर "डबल = नल" चाल का भी उपयोग करता हूं। मैं इसे NaN विकल्प के लिए पसंद करूंगा, क्योंकि दोनों NaN एक मान के रूप में हो सकता है, और क्योंकि "अनलसेट के लिए शून्य" जावा में एक सामान्य प्रथा है। – sleske