पर गोल किया गया है, तो मुझे तृतीय पक्ष द्वारा प्रदान की गई लाइब्रेरी का परीक्षण करने के लिए कहा गया है। पुस्तकालय एन महत्वपूर्ण आंकड़ों के लिए सटीक माना जाता है। किसी भी कम महत्वपूर्ण त्रुटियों को सुरक्षित रूप से अनदेखा किया जा सकता है। मैं मेरे परिणामों की तुलना करने में मदद करने के लिए एक समारोह लिखना चाहते हैं:यह निर्धारित करने के लिए कि क्या दो संख्याएं लगभग बराबर हैं, जब महत्वपूर्ण दशमलव अंकों
def nearlyequal(a, b, sigfig=5):
इस समारोह का उद्देश्य यह दो फ्लोटिंग प्वाइंट संख्या निर्धारित करने के लिए है (ए और बी) के लगभग बराबर है। फ़ंक्शन वापस लौटाएगा यदि एक == बी (सटीक मिलान) या यदि ए और बी के पास समान मान है तो sigfig दशमलव में लिखे गए महत्वपूर्ण आंकड़े।
क्या कोई भी अच्छा कार्यान्वयन सुझा सकता है? मैंने मिनी यूनिट-टेस्ट लिखा है। जब तक आप मेरे परीक्षण में एक बग देख सकते हैं तो एक अच्छा कार्यान्वयन निम्नलिखित पारित करना चाहिए:
assert nearlyequal(1, 1, 5)
assert nearlyequal(1.0, 1.0, 5)
assert nearlyequal(1.0, 1.0, 5)
assert nearlyequal(-1e-9, 1e-9, 5)
assert nearlyequal(1e9, 1e9 + 1 , 5)
assert not nearlyequal(1e4, 1e4 + 1, 5)
assert nearlyequal(0.0, 1e-15, 5)
assert not nearlyequal(0.0, 1e-4, 6)
अतिरिक्त नोट्स:
- मान ए और बी प्रकार int, नाव या numpy.float64 का हो सकता है। मान ए और बी हमेशा एक ही प्रकार के होंगे। यह महत्वपूर्ण है कि रूपांतरण फ़ंक्शन में अतिरिक्त त्रुटि नहीं पेश करता है।
- आइए इसे संख्यात्मक रखें, इसलिए स्ट्रिंग्स में कनवर्ट करने या गैर-गणितीय चाल का उपयोग करने वाले फ़ंक्शंस आदर्श नहीं हैं। इस कार्यक्रम का लेखा किसी ऐसे व्यक्ति द्वारा किया जाएगा जो गणितज्ञ है जो यह साबित करने में सक्षम होना चाहता है कि समारोह वह करता है जो इसे करना है।
- गति ... मुझे बहुत सी संख्याओं की तुलना करना है ताकि तेज़ी से बेहतर हो।
- मुझे numpy, scipy और मानक-पुस्तकालय मिला है। मेरे लिए कुछ भी मुश्किल होगा, खासकर परियोजना के इस तरह के एक छोटे से हिस्से के लिए।
[फ़्लोटिंग प्वाइंट नंबर की तुलना, 2012 संस्करण] (https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/) – endolith