यह निश्चित रूप से सुरक्षित है, लेकिन आप पर विचार करने के लिए क्या है में double
परिणाम किया। यदि आपका एल्गोरिदम factor
को विभाजक के रूप में उपयोग करता है (और विभाजित-शून्य-शून्य के लिए स्वयं की जांच नहीं करता है), तो हाँ, applyComplexAlgorithm(factor)
पर कॉल करने से पहले factor != 0.0f
की जांच करना पूरी तरह से उचित है।
अब, factor
का उपयोग करने से पहले आपको कुछ ईपीएसलॉन से कम मूल्य की जांच करनी चाहिए या नहीं, यह आपके कोड के अनुसार पूरी तरह से है और आपके द्वारा प्रदान किए गए कोड के साथ अलगाव में निर्धारित नहीं किया जा सकता है।
यदि (जैसा कि आपने किसी अन्य टिप्पणी में कहा है) तो आप विशेष मूल्य 0.0f
को एक सेंटीनेल मान के रूप में उपयोग करना चाहते हैं जिसका अर्थ है कुछ विशिष्ट (जैसे किसी कारक की गणना करने में असमर्थता), फिर हां, यह उपयोग करने की तुलना करने के लिए बिल्कुल सुरक्षित है ==
। उदाहरण के लिए, 0.0f
के निम्नलिखित कोड का उपयोग नियतात्मक है और roundoff त्रुटि के किसी भी प्रकार के अधीन नहीं है:
float calculateFactor()
{
int phase = moon_phase();
if (phase == FULL) { // whatever special case requires returning 0.0f
return 0.0f;
} else {
return 1.0 + (phase * phase); // something that is never 0.0f
}
}
float factor = calculateFactor();
if(factor != 0.0f)
applyComplexAlgorithm(factor);
स्रोत
2011-12-20 22:54:52
मैं अपने प्रश्न में एक स्वीकार्य उत्तर देने के लिए केवल उत्तर स्वीकार नहीं करता हूं, वास्तव में एक उत्तर होना चाहिए कि मुझे पूरी तरह से प्रश्न का उत्तर मिल जाए। –