/ / MiniTest के assert_in_delta और assert_in_epsilon विधियों के बीच क्या अंतर है? - रूबी, न्यूनतम, अनुमानित

मिनीटेस्ट के assert_in_delta और assert_in_epsilon विधियों के बीच क्या अंतर है? - रूबी, न्यूनतम, अनुमानित

यहाँ है के लिए प्रलेखन assert_in_delta:

assert_in_delta(exp, act, delta = 0.001, msg = nil) public

फ्लोट्स की तुलना करने के लिए। विफल रहता है जब तक कि एक्सप और एक्ट एक-दूसरे के डेल्टा के भीतर न हों।

assert_in_delta Math::PI, (22.0 / 7.0), 0.01

और यहाँ है के लिए प्रलेखन assert_in_epsilon

assert_in_epsilon(a, b, epsilon = 0.001, msg = nil) public

फ्लोट्स की तुलना करने के लिए। विफल रहता है जब तक कि एक्सप और एक्ट में ईपीएसलॉन से कम रिश्तेदार त्रुटि न हो।

ये बहुत समान दिखते हैं; वास्तव में क्या अंतर है? आप दूसरे पर एक विधि का उपयोग कब करेंगे?

उत्तर:

जवाब के लिए 5 № 1

मुख्य अंतर यह है:

  • assert_in_delta के लिए है पूर्ण त्रुटियों।
  • assert_in_epsilon के लिए है सापेक्ष त्रुटियों।

ये दो अलग-अलग प्रकार हैं अनुमान त्रुटि:

पूर्ण त्रुटि सटीक मूल्य और अनुमान के बीच अंतर की परिमाण है।

सापेक्ष त्रुटि सटीक मान की परिमाण से विभाजित पूर्ण त्रुटि है।


assert_in_delta समझने के लिए सबसे आसान है, और आमतौर पर परीक्षणों में इस्तेमाल किया जाएगा।

प्रलेखन के उदाहरण में: assert_in_delta Math::PI, (22.0 / 7.0), 0.01, यह दावा होगा उत्तीर्ण करना इसलिये 22.0/7 - Math::PI == 0.001264..., जो अनुमति से कम है delta का 0.01.


(से विकिपीडिया)

assert_in_epsilon अक्सर जंगली रूप से भिन्न आकार की संख्या के अनुमानों की तुलना करने के लिए प्रयोग किया जाता है।

उदाहरण के लिए, संख्या का अनुमान लगाया जा रहा है 1,000 की एक पूर्ण त्रुटि के साथ 3 ज्यादातर अनुप्रयोगों में, संख्या को अनुमानित करने से भी बदतर है 1,000,000 की एक पूर्ण त्रुटि के साथ 3; पहले मामले में सापेक्ष त्रुटि है 0.003 और दूसरे में यह केवल है 0.000003.

इस उदाहरण को लिखने के लिए MiniTest, मान लीजिए कि हमारे पास दो मानों की एक सरणी है जिसे हम देखना चाहते हैं "लगभग बराबर" हैं 1,000 तथा 1,000,000 क्रमशः। हम निम्नलिखित लिख सकते हैं:

# Using the default `epsilon` of 0.001
assert_in_epsilon(1_000, actual[0])
assert_in_epsilon(1_000_000, actual[1])

यह कामकाजी रूप से लिखने के बराबर होगा:

assert_in_delta(1_000, actual[0], 1)
assert_in_delta(1_000_000, actual[1], 1000)