python पायथन में एप्सिलॉन के लिए मूल्य




comparison floating-point (3)

क्या पायथन में एप्सिलॉन प्राप्त करने के लिए (या विधि के लिए) एक मानक मूल्य है? मुझे फ्लोटिंग पॉइंट वैल्यू की तुलना करने की जरूरत है और सबसे छोटे संभव अंतर के खिलाफ तुलना करना चाहता हूं।

C ++ में एक फ़ंक्शन प्रदान किया गया है numeric_limits::epsilon( ) जो किसी भी दिए गए डेटा प्रकार के लिए एप्सिलॉन मान देता है। क्या पायथन में एक समकक्ष है?


जानकारी sys.float_info में उपलब्ध है, जो C99 में float.h से मेल खाती है।

>>> import sys
>>> sys.float_info.epsilon
2.220446049250313e-16

आश्चर्यचकित किसी ने यहां इसका उल्लेख नहीं किया; मुझे लगता है कि कई लोग इसके बजाय numpy.finfo (प्रकार (चर)) .eps का उपयोग करेंगे। या .resolution अगर यह परिशुद्धता का आकलन करने के लिए है।

ध्यान दें कि finfo केवल फ़्लोटिंग पॉइंट प्रकारों के लिए है, और यह भी पायथन के अपने float प्रकार के साथ काम करता है (यानी नंबरी के प्रकारों तक सीमित नहीं)। पूर्णांक प्रकारों के लिए बराबर है iinfo , हालांकि इसमें सटीक जानकारी नहीं है (क्योंकि, ठीक है, यह क्यों होगा?)।


जैसा कि sys.float_info.epsilon पोस्ट किया गया है , sys.float_info.epsilon

लेकिन फ्लोटिंग पॉइंट की तुलना के लिए इसे एक पूर्ण त्रुटि मार्जिन के रूप में उपयोग करने के नुकसान को मत भूलना। उदाहरण के लिए बड़ी संख्या में, गोलाई त्रुटि एप्सिलॉन से अधिक हो सकती है।

अगर आपको लगता है कि आपको एक रिफ्रेशर की आवश्यकता है, तो मानक संदर्भ डेविड गोल्डबर्ग की व्हाट एवरी कंप्यूटर साइंटिस्ट को फ़्लोटिंग-पॉइंट अंकगणित के बारे में जानना चाहिए , या एक सरल समीक्षा के लिए आप फ़्लोटिंग पॉइंट गाइड की जांच कर सकते हैं।





epsilon