बयानडबल रूपांतरण में फ़्लोट - यूनिट परीक्षण में सर्वश्रेष्ठ दावा?
float f = 7.1f;
double d = f;
क्या हम घ के बारे में एक इकाई परीक्षण में जोर कर सकते हैं को देखते हुए?
उदाहरण के लिए यह काम नहीं करता:
Console.WriteLine(d == 7.1d); // false
Console.WriteLine(d < 7.1d + float.Epsilon); // true by luck
Console.WriteLine(d > 7.1d - float.Epsilon); // false (less luck)
सबसे अच्छा तरीका है मैं अब तक पाया मूल्य वापस कन्वर्ट करने के लिए है:
float f2 = (float)d;
Console.WriteLine(f2 == f); // true
कौन सा जानवर के रूप में ही किया जाएगा
Console.WriteLine(d == 7.1f); // 7.1f implicitly converted to double as above
यह प्रश्न सामान्य रूप से डबल और फ्लोट परिशुद्धता के बारे में नहीं है, लेकिन वास्तव में व्यावहारिक प्रश्न के बारे में केवल एक इकाई परीक्षण डी की सीमाओं का सबसे अच्छा वर्णन कैसे कर सकता है। मेरे मामले में, डी एक रूपांतरण का परिणाम है जो हल्के वजन कोड उत्पादन द्वारा उत्पन्न कोड में होता है। इस कोड पीढ़ी का परीक्षण करते समय, मुझे इस समारोह के नतीजे के बारे में दावा करना होगा और अंततः उपरोक्त सरल प्रश्न पर उबाल लें।
आप किस इकाई परीक्षण ढांचे का उपयोग कर रहे हैं? हो सकता है कि आप जरूरी शर्त के खिलाफ ज़ोर देना न करें उदा। 'Assert.IsTrue (हालत)', आप उदाहरण का उपयोग करने में सक्षम हो सकता है 'Assert.AreEqual (value1, value2) 'जो संख्यात्मक प्रारूपों के बीच समानता को संभाल सकता है। – StuperUser
मुझे अभी भी यकीन नहीं है कि आप यहां परीक्षण करने का प्रयास कर रहे हैं। एक डबल की एक फ्लोट की तुलना में अधिक सटीकता होती है और इस तरह वे शायद ही कभी एक दूसरे के बराबर "बराबर" होंगे। – CodeCaster
यदि आप फ्लोट को प्रारंभ करने के लिए निरंतर उपयोग में अंतिम एफ को छोड़ देते हैं, तो यह और भी बदतर हो सकता है, यहां एक तैयार उदाहरण देखें http://stackoverflow.com/questions/13276862/cc-notation-of-double-floating-point -वृत्त/13279512 # 13279512 –