सी ++: प्रारूप float
के लिए प्रारूप spec क्या है? (दृश्य सी ++)सी ++: "फ्लोट" के लिए printf() प्रारूप spec क्या है?
ऐसा लगता था कि और %lg
double
के लिए मैंने %g
का उपयोग किया था।
ऐसा लगता है कि spec बदल गया है और float
अपरिभाषित है और double
%g
है।
मेरे पास स्मृति में बिट्स हैं जो मैं प्रिंट कर रहा हूं इसलिए कास्टिंग एक विकल्प नहीं है।
क्या कोई तरीका है कि मैं मान printf()
का उपयोग कर मुद्रित कर सकता हूं?
अद्यतन:
इस कोड को इकाई का परीक्षण सामान्य सी ++ एक एम्बेडेड सिस्टम पर इस्तेमाल किया libs के लिए लिखा गया था। यहाँ मैं float
काम करने के लिए प्राप्त करने के लिए करना था क्या। कोड एक टेम्पलेट समारोह में है:
if (typeid(Ttyp) == typeid(float)) {
float64 c = *(float32*)&Tp(row,col);
float64 a1 = *(float32*)&Arg1(row,col);
float64 a2 = *(float32*)&Arg2(row,col);
float64 e = *(float32*)&Exp(row,col);
m_b = (c == e);
_snprintf(m_acDiag, sizeof(m_acDiag)-1
, "add(Arg1,Arg2): arg1=%g, arg2=%g, Expected=%g, Actual=%g, Result: %s"
, a1, a2, e, c, BOOL_PF(m_b));
} else {
...
सुंदर बदसूरत है ना:
template <typename T,typename TTYP,typename Ttyp,int bits,bool IsSigned>
Error testMatrixT()
{ ...
यहाँ एक कोड स्निप है? तर्क के रूप में फ्लोट का उपयोग खराब आउटपुट देते हैं। शायद _snprintf()
का उपयोग करने के कारण? साल पहले मैं %lg
का उपयोग करता हूं और यह ठीक होगा। अब और नहीं।
यह एक तीसरा या चौथा प्रश्न है जिसे मैंने देखा है, कई दिनों में, एक फ्लोट प्रिंट करने के बारे में! – Praetorian
आपने उल्लेख नहीं किया कि यदि आप% g का उपयोग करते हैं तो क्या होता है। लेकिन वैसे भी% g फ्लोट के लिए डिफ़ॉल्ट नहीं है। – steve
@steve: '% g' फ्लोट के लिए काम करता है, क्योंकि इसे दोहराया जाता है। –