ध्यान दें कि यदि आप गणित नहीं कर रहे हैं, तो सटीक फ़्लोटिंग पॉइंट मानों को सम्मिलित करने में कुछ भी गलत नहीं है। उदाहरण के लिए:
public interface Foo {
double getDefaultValue();
}
public class FooImpl implements Foo {
public double getDefaultValue() { return Double.MIN_VALUE; }
}
इस मामले में, आप यह सुनिश्चित करना चाहते हैं कि यह वास्तव में है MIN_VALUE
, शून्य -MIN_VALUE
या MIN_NORMAL
या कुछ अन्य बहुत छोटा मूल्य नहीं है। तुम कह सकते हो
double defaultValue = new FooImpl().getDefaultValue();
assertEquals(Double.MIN_VALUE, defaultValue);
लेकिन इससे आपको डेप्रिसिएशन की चेतावनी मिलेगी। इससे बचने के लिए, आप assertEquals(Object, Object)
इसके बजाय कॉल कर सकते हैं :
// really you just need one cast because of autoboxing, but let's be clear
assertEquals((Object)Double.MIN_VALUE, (Object)defaultValue);
और, यदि आप वास्तव में चतुर दिखना चाहते हैं:
assertEquals(
Double.doubleToLongBits(Double.MIN_VALUE),
Double.doubleToLongBits(defaultValue)
);
या आप बस Hamcrest धाराप्रवाह शैली का उपयोग कर सकते हैं:
// equivalent to assertEquals((Object)Double.MIN_VALUE, (Object)defaultValue);
assertThat(defaultValue, is(Double.MIN_VALUE));
मूल्य आप कर रहे हैं की जाँच तो है कुछ गणित कर रही है से आते हैं, हालांकि, एप्सिलॉन का उपयोग करें।