मैं एक JUnit परीक्षण के साथ निम्न दो डबल वस्तुओं जोर देते हुए था:JUnit अंतर
Assert.assertEquals(Double expected, Double result);
यह था ठीक था तो मैं बदलने का फैसला किया यह आदिम डबल का उपयोग करने के लिए, जिसे तब तक बहिष्कृत किया जाता है जब तक कि आप डेल्टा भी प्रदान न करें।
तो मैं क्या सोच रहा हूं कि इस ऑब्जेक्ट में डबल ऑब्जेक्ट या आदिम प्रकार का उपयोग करने के बीच क्या अंतर है? बिना डेल्टा के ऑब्जेक्ट्स का उपयोग क्यों कर रहा है लेकिन फिर डेल्टा के बिना प्राइमेटिव का उपयोग करना बहिष्कृत किया गया है? क्या जावा पृष्ठभूमि में कुछ कर रहा है जिसमें पहले से ही एक डिफ़ॉल्ट डेल्टा मूल्य है जिसे ध्यान में रखा गया है?
धन्यवाद।
+1 फिर से अनबॉक्सिंग, हाँ, चेतावनी के साथ कि यदि एक या अन्य डबल शून्य है तो आपके पास थोड़ा अलग व्यवहार होगा। ऑब्जेक्ट के साथ, आपको डेल्टा के साथ एक अच्छा संदेश मिलेगा, आपको एक NullPointerException मिलेगा। –
मेरा अनुभव यह है कि ये विधियां कुछ परिस्थितियों में बहुत बड़ी संख्या के लिए अच्छी तरह से काम नहीं करती हैं, खासकर यदि आपका डेटा परिमाण के आदेशों पर भिन्न होता है। दो संख्याओं में बहुत कम प्रतिशत त्रुटि हो सकती है, लेकिन मैच के लिए एक बड़े बड़े डेल्टा की आवश्यकता होती है। लेकिन वही डेल्टा आपके डेटा में बहुत कम मूल्यों के लिए काम नहीं करेगा। कुछ मामलों में, लगभग सभी महत्वपूर्ण अंकों से मेल खाने के लिए भी बहुत बड़ी संख्या की उम्मीद की जा सकती है। अन्य मामलों में, जैसे कि दो अनुकूलित एफएफटी एल्गोरिदम की तुलना करते समय, यह बहुत कम संभावना है। सापेक्ष त्रुटि को बाधित करने के लिए एक और मजबूत विधि है। – orodbhen
@orodbhen इसे काम करने के लिए किसी को अपेक्षित मूल्य के एक्सपोनेंट पर डेल्टा बेसिंग की गणना करनी चाहिए, इसलिए यदि 'डबल ई' अपेक्षित मान है, तो डेल्टा' डबल डी = Math.pow (10, Math.log10 (Math। abs (ई)) - 12); 'जहां '12' महत्वपूर्ण अंकों की अधिकतम व्यावहारिक संख्या है। यदि आप लॉग 10 को मान <1.0 से गुणा करते हैं, तो परीक्षण बड़े सकारात्मक एक्सपोनेंट वाले 'ई' के लिए असफल हो जाएगा और इसके विपरीत, यदि आप value10 1.0 द्वारा लॉग 10 गुणा करते हैं, तो यह 'नकारात्मक' होने वाले बड़े नकारात्मक एक्सपोनेंट के लिए विफल हो जाएगा - और यह वह प्रभाव है जिसके बारे में आप लिख रहे थे। तो सुनिश्चित करें कि डेल्टा अपेक्षित मूल्य के एक्सपोनेंट के लिए उपयुक्त है। – Cromax