C++:float
的printf()
格式规格是什么? (Visual C++)C++:“float”的printf()格式规范是什么?
它曾经是我用%g
为float
和%lg
为double
。
它看起来像规范改变和float
未定义和double
是%g
。
我有内存中的位,我打印出来,所以铸件不是一个选项。
有没有一种方法可以使用printf()
打印出float
值?
更新:
此代码为单位测试的嵌入式系统上使用的通用C++库被写入。 以下是我必须要做的事情才能让float
正常工作。 的代码是一个模板函数:
template <typename T,typename TTYP,typename Ttyp,int bits,bool IsSigned>
Error testMatrixT()
{ ...
下面是一个代码剪断:
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 {
...
很丑陋,不是吗?使用浮点数作为参数会导致错误的输出。也许由于使用_snprintf()
? 年前,我会使用%lg
,这将是确定的。不再。
这是我见过的第三或第四个问题,在很多天里,关于印刷浮法! – Praetorian
你没有提到如果你使用%g会发生什么。但%g不是浮动的默认值。 – steve
@steve:'%g'适用于float,因为它被提升为double。 –