2011-05-09 14 views
65

संभव डुप्लिकेट:
JUnit: assertEquals for double valuesJUnit assertEquals (डबल की उम्मीद, डबल वास्तविक, डबल एप्सिलॉन)

जाहिर assertEquals(double expected, double actual) मान्य नहीं है।

जुनीट के लिए जावाडॉक्स आश्चर्यजनक रूप से कमी कर रहे हैं, इसका व्यापक उपयोग विचार करते हैं। क्या आप मुझे दिखा सकते हैं कि नए assertEquals(double expected, double actual, double epsilon) का उपयोग कैसे करें?

+0

यूप, यह एक डुप्लिकेट है। मैंने करीब मतदान किया। सबको शुक्रीया! – LuxuryMode

+1

[उत्तर के साथ निम्नलिखित प्रश्न] देखें (http://stackoverflow.com/q/5686755/680503)। – Constantiner

+1

हाँ, बस एहसास हुआ कि यह एक डुप्लिकेट है। – LuxuryMode

उत्तर

113

ईपीएसलॉन आपका "फ़ज़ फैक्टर" है, क्योंकि युगल बिल्कुल बराबर नहीं हो सकता है। एपीएसलॉन आपको यह बताता है कि उन्हें कितना करीब होना है।

यदि आप 3.14159 उम्मीद कर रहे थे लेकिन (कि 0,001 के भीतर, है), तो आप (जैसे

double myPi = 22.0d/7.0d; //Don't use this in real life! 
assertEquals(3.14159, myPi, 0.001); 

कुछ वैसे लिखना चाहिए 3,14259 को 3,14059 से कहीं भी ले जाएगा, 22/7 3.1428 करने के लिए बाहर आता है +, और दावा विफल हो जाएगा। यह एक अच्छी बात है।)

+0

मेरे पास एक विशेष 'अधिकतम' फ़ंक्शन है जहां' NaN' बताता है कि मूल व्यवहार के विपरीत 'अधिकतम (NaN, 3.0) '' 3.0' बराबर है। मेरे परीक्षण मामलों में 'assertEquals (डबल, डबल)' वांछित चीज है और मुझे नहीं पता कि यह क्यों हटा दिया गया है। कभी-कभी आप 'फ्लोट' या 'डबल' का उपयोग करते समय भी समय-समय पर परिणाम की उम्मीद कर सकते हैं। – Notinlist

संबंधित मुद्दे