"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > आपको जावा में फ़्लोट्स की तुलना करने के लिए == का उपयोग क्यों नहीं करना चाहिए?

आपको जावा में फ़्लोट्स की तुलना करने के लिए == का उपयोग क्यों नहीं करना चाहिए?

2024-12-21 को प्रकाशित
ब्राउज़ करें:451

Why Shouldn't You Use == to Compare Floats in Java?

प्रश्न: जावा में फ्लोट तुलना के लिए == का उपयोग करने के नुकसान

जावा में फ्लोटिंग-पॉइंट नंबरों के लिए एक समानता ऑपरेटर के रूप में इसकी उपस्थिति के बावजूद , == में फ़्लोट्स की तुलना करते समय सीमाएँ होती हैं, जैसा कि "JAVA0078 फ़्लोटिंग पॉइंट मानों की तुलना में स्थैतिक विश्लेषण चेतावनियों से प्रमाणित होता है =='.

उत्तर: परिशुद्धता समस्या

फ़्लोटिंग-पॉइंट संख्याओं को अनुमान के रूप में संग्रहीत किया जाता है, और संचालन के दौरान राउंडिंग त्रुटियां हो सकती हैं। नतीजतन, दो फ़्लोट्स की तुलना करने के लिए == का उपयोग करने से गलत नकारात्मक या सकारात्मक परिणाम मिल सकते हैं।

सही दृष्टिकोण: सहनशीलता मार्जिन

"समानता" के लिए फ़्लोट्स की तुलना करने का उचित दृष्टिकोण इसमें परीक्षण शामिल है कि क्या उनके बीच पूर्ण अंतर पूर्वनिर्धारित सहिष्णुता मूल्य से छोटा है। यह सुनिश्चित करता है कि तुलना त्रुटियों को गोल करने के लिए जिम्मेदार है और इच्छित परिशुद्धता से मेल खाती है:

if(Math.abs(sectionID - currentSectionID) 

एप्सिलॉन मूल्य चयन

उपयुक्त ईपीएसलॉन मान का चयन वांछित परिशुद्धता पर निर्भर करता है। सटीक तुलना के लिए, छोटे ईपीएसलॉन मानों का उपयोग किया जाता है, जबकि बड़े ईपीएसलॉन मान त्रुटि के व्यापक मार्जिन की अनुमति देते हैं।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3