में आपका स्वागत है कोड का उपयोग करें। जैसा कि कहीं और बताया गया है, फ्लोटिंग पॉइंट समानता और सहनशीलता के लिए एक सामान्य उद्देश्य समाधान मौजूद नहीं है। यह देखते हुए, उपकरण और सिद्धांत हैं जो एक प्रोग्रामर चुनिंदा मामलों में उपयोग कर सकते हैं।
fabs(a_float - b_float) < tol
में संक्षिप्त ओपी का उल्लेख है: "सामान्य मामले के लिए अच्छा काम नहीं करता है जहां एफ्लोट बहुत छोटा हो सकता है या बहुत बड़ा हो सकता है।" fabs(a_float - ref_float) <= fabs(ref_float * tol)
संस्करण के साथ copes बहुत बेहतर है।
ओ पी के "एकल परिशुद्धता चल बिन्दु संख्या उपयोग सहने = 10E-6" ++ इतनी आसानी से double
को float
गणित को बढ़ावा देने के सी और सी के लिए थोड़ा चिंताजनक है और फिर इसे double
, नहीं float
की "सहनशीलता" है, कि में आता है प्ले। float f = 1.0; printf("%.20f\n", f/7.0);
पर विचार करें बहुत से नए प्रोग्रामर यह नहीं समझते कि 7.0
ने double
सटीक गणना की है। double
का उपयोग करके अपने कोड को छोड़कर सिफारिश करें, जहां बड़ी मात्रा में डेटा float
छोटे आकार की आवश्यकता है।
सी 99 nextafter()
प्रदान करता है जो "सहिष्णुता" को मापने में मदद करने में उपयोगी हो सकता है। इसका उपयोग करके, कोई अगली प्रतिनिधित्व योग्य संख्या निर्धारित कर सकता है। यह ओपी के साथ मदद करेगा "...भंडारण प्रकार शून्य से एक के लिए महत्वपूर्ण अंक ... से भरा संख्या roundoff त्रुटि के लिए अनुमति देने के लिए। "if ((nextafter(x, -INF) <= y && (y <= nextafter(x, +INF))) ...
तरह tol
की या" सहिष्णुता "का इस्तेमाल किया अक्सर बात की जड़ है। अक्सर (IMHO) एक रिश्तेदार सहिष्णुता महत्वपूर्ण है। उदाहरण के लिए? कभी-कभी कोई पूर्ण सहिष्णुता की जरूरत है "एक्स और 0.0001% के भीतर y हैं"। जैसे?
सहिष्णुता की मूल्य "एक्स और 0.0001 के भीतर y हैं" अक्सर सर्वोत्तम मूल्य के लिए बहस योग्य होता है अक्सर स्थिति निर्भर होती है। 0.01 के भीतर तुलना करना काम कर सकता है डॉलर के लिए एक वित्तीय आवेदन के लिए लेकिन येन नहीं। (संकेत:। एक कोडन शैली है कि आसान अद्यतन की अनुमति देता है का उपयोग सुनिश्चित करें)
आप पढ़ी [इस] (http://en.wikibooks.org/wiki/Floating_Point/Epsilon)? – NINCOMPOOP
यदि आप सही परिशुद्धता चाहते हैं, तो आप तर्कसंगत संख्या पुस्तकालयों में से एक का उपयोग कर सकते हैं। –
प्रश्न: सभी सामान्य मामलों के लिए सही ढंग से 'tol' की गणना कैसे करता है? ए: एक नहीं करता है। इस तरह की तुलना सहिष्णुता मूल्य (और एफडब्ल्यूआईडब्ल्यू) के बावजूद सभी मामलों के लिए उपयुक्त नहीं है, * क्या आप * सबसे अच्छी तरह से जानते हैं कि आपके द्वारा परीक्षण की जाने वाली चीज़ * के लिए उचित सहिष्णुता क्या है?) –