दिलचस्प पोस्ट
सी # में Google अनुवाद का उपयोग करना इकाई फ़्रेमवर्क 4.0 के साथ System.ComponentModel.DataAnnotations का उपयोग करना कन्वर्ट स्ट्रिंग को DateTime में सी # AngularJS: $ evalAsync vs $ टाइमआउट सी ++ प्रतिनिधि क्या है? समस्याएं Resteasy 3.09 CorsFilter रिच टेक्स्टबॉक्स वाइफ़एफ बंधन "बराबर नहीं" ऑपरेटरों के बीच अंतर <> और! = PHP में $ http अनुरोधों में कुकी नहीं भेजता जावा के लिए आराम ग्राहकों? सी ++ में, क्या यह सीआईडी ​​कॉलबैक के लिए स्थिर सदस्य फ़ंक्शन पॉइंटर का उपयोग करने के लिए सुरक्षित / पोर्टेबल है? फ़ाइल या विधानसभा को लोड नहीं किया जा सका 'System.Web.Mvc' jQuery – आग घटना अगर सीएसएस वर्ग बदल गया है Django: एक मॉडल को सहेजते समय यूजर आईडी को पॉप्युलेट करें पायथन में द्विआधारी खोज (द्विकार)

एक आदिम फ्लोट मान -0.0 कैसे हो सकता है? इसका क्या मतलब है?

कैसे एक आदिम नाव मूल्य -0.0 हो सकता है? इसका क्या मतलब है?
क्या मैं उस सुविधा को रद्द कर सकता हूँ?

जब मेरे पास है:

float fl; 

फिर fl == -0.0 रिटर्न true और ऐसा करता है fl == 0 लेकिन जब मैं इसे प्रिंट करता हूँ, तो यह प्रिंट करता है -0.0

वेब के समाधान से एकत्रित समाधान "एक आदिम फ्लोट मान -0.0 कैसे हो सकता है? इसका क्या मतलब है?"

क्योंकि जावा आईईईई मानक का प्रयोग फ़्लोटिंग-पॉइंट अरिथेटिक (आईईईई 754) के लिए करता है जो परिभाषित करता है -0.0 और इसका इस्तेमाल कब किया जाना चाहिए।

सबसे छोटी संख्या का प्रतिनिधित्व करने योग्य का असामान्य महत्व में 1 बीटा नहीं है और इसे साइन-इन के अनुसार निर्धारित सकारात्मक या नकारात्मक शून्य कहा जाता है। यह वास्तव में शून्य के बीच की संख्या में शून्य के बराबर और एक ही चिह्न के न्यूनतम प्रतिनिधित्व करने योग्य गैर-शून्य संख्या का प्रतिनिधित्व करता है, यही कारण है कि इसमें एक संकेत है, और इसके पारस्परिक + Inf या -Inf भी एक संकेत क्यों है

आप 0.0 जोड़कर अपनी विशिष्ट समस्या को प्राप्त कर सकते हैं

जैसे

 Double.toString(value + 0.0); 

देखें: जावा फ़्लोटिंग-प्वाइंट नंबर इंट्रैक्शंस

निगेटिव ज़रो का संचालन करने वाले संचालन

(-0.0) + 0.0 -> 0.0

"-0.0" का उत्पादन किया जाता है जब एक फ्लोटिंग-प्वाइंट आपरेशन का परिणाम नकारात्मक फ्लोटिंग-पॉइंट नंबर में होता है जो कि 0 के करीब होता है जो आमतौर पर प्रदर्शित नहीं किया जा सकता है।

कैसे एक आदिम फ्लोट मूल्य हो सकता है -0.0?

फ़्लोटिंग प्वाइंट नंबर आईईईई 754 मानक का प्रयोग करते हुए स्मृति में संग्रहीत होता है जिसका अर्थ है कि गोल त्रुटियाँ हो सकती हैं। आप परिमित संसाधनों के साथ अनंत परिशुद्धता की एक अस्थायी बिंदु संख्या को संग्रहित करने में सक्षम नहीं हो सकते हैं।

आपको कभी भी जांच नहीं करनी चाहिए कि कोई अस्थायी बिंदु संख्या == कुछ अन्य के लिए, अर्थात् कभी इस प्रकार कोड लिखना नहीं है:

 if (a == b) 

जहां a और b फ़्लोट्स हैं गोल त्रुटियों के कारण उन दो नंबर को स्मृति में भिन्न मानों के रूप में संग्रहित किया जा सकता है।

आपको उस परिशुद्धता को परिभाषित करना चाहिए जिसे आप इसके साथ काम करना चाहते हैं:

 private final static double EPSILON = 0.00001; 

और फिर आपको सटीकता के खिलाफ परीक्षण की आवश्यकता है

 if (Math.abs(a - b) < epsilon) 

तो आपके मामले में यदि आप यह परीक्षण करना चाहते हैं कि एक अस्थायी बिंदु संख्या शून्य के बराबर होती है,

 if (Math.abs(a) < epsilon) 

और अगर आप संख्याओं को उन्हें जीयूआई में आउटपुट करते समय प्रारूपित करना चाहते हैं तो आप निम्न आलेख और नंबरफ़ॉर्मैट कक्षा को देख सकते हैं।

जावा में फ्लोटिंग पॉइंट प्रकार जेएलएस में वर्णित है: 4.2.3 फ़्लोटिंग पॉइंट प्रकार, फॉर्मैट, और वैल्यू ।

यह इन विशेष मूल्यों के बारे में बात करता है:

(…) चार मानों में से प्रत्येक में न केवल परिमित नोजेरो मूल्य शामिल हैं जो इसके ऊपर वर्णित हैं, लेकिन नाएन के मूल्य और चार मान सकारात्मक शून्य, नकारात्मक शून्य , सकारात्मक अनन्तता, और नकारात्मक अनन्तता। (…)

और उनके बारे में कुछ महत्वपूर्ण नोट हैं:

सकारात्मक शून्य और नकारात्मक शून्य बराबर की तुलना करें; इस प्रकार अभिव्यक्ति 0.0 == – 0.0 का परिणाम सत्य है और 0.0 का परिणाम -0.0 गलत है। लेकिन अन्य कार्यों में सकारात्मक और नकारात्मक शून्य भिन्न हो सकता है; उदाहरण के लिए, 1.0 / 0.0 में मूल्य पॉजिटिव अनन्तता है, जबकि 1.0 / -0.0 का मान ऋणात्मक अनंत है।

आप उस सुविधा को "रद्द कर सकते हैं" नहीं कर सकते हैं, इसका हिस्सा यह है कि फ़्लोट्स कैसे काम करते हैं

नकारात्मक शून्य के बारे में अधिक जानने के लिए, हस्ताक्षरित शून्य विकिपीडिया प्रविष्टि पर एक नज़र डालें।

यदि आप यह देखना चाहते हैं कि आपके पास "किस तरह का" शून्य है, तो आप इस तथ्य का उपयोग कर सकते हैं कि:

 (new Float(0.0)).equals(new Float(-0.0)) 

false (लेकिन वास्तव में, 0.0 == -0.0 )।

यहां अधिक जानकारी के लिए यहां देखें: जावा फ्लोटिंग-प्वाइंट नंबर इंट्रिकेसीज ।

विकिपीडिया से

फ्लोटिंग पॉइंट अंकगणित के लिए आईईईई 754 मानक (वर्तमान में अधिकांश कंप्यूटरों और प्रोग्रामिंग लैंग्वेज द्वारा उपयोग किए जाने वाले फ्लोटिंग प्वाइंट नंबरों का समर्थन करते हैं) को 0 और -0 दोनों के लिए आवश्यक है शून्य को विस्तारित वास्तविक संख्या रेखा के एक प्रकार के रूप में माना जा सकता है, जैसे कि 1 / -0 = -∞ और 1 / + 0 = + ∞, शून्य से विभाजन केवल ± 0 / ± 0 और ± ∞ / ± ± के लिए अनिर्धारित होता है ।

मुझे नहीं लगता कि आप उस सुविधा को रद्द कर सकते हैं या रद्द कर सकते हैं। सटीकता की त्रुटियों के कारण वैसे भी आपको == के साथ फ़्लोटिंग बिंदु संख्याओं की तुलना नहीं करनी चाहिए।

जावा / कंप्यूटर्स में फ्लोट पॉइंट नंबर कैसे प्रबंधित किए जाने पर एक अच्छा लेख। http://www.artima.com/underthehood/floating.html

बीटीडब्ल्यू: कंप्यूटर में वास्तविक दर्द है, जब 2.0 – 1.0 0.999999999 99 9 का उत्पादन कर सकता है जो कि 1 के बराबर नहीं है :)। यह विशेष रूप से जावास्क्रिप्ट फॉर्म सत्यापन में ठोकर खाई जा सकती है।