C:float的printf()格式规范是什么? (Visual C)
以前我用%g代表浮点数,%lg代表双倍.
它看起来像spec改变了,float是未定义的,double是%g.
我打印出来的内存中的位数因此不能选择.
有没有办法可以使用printf()打印浮点值?
更新:
此代码是为在嵌入式系统上使用的通用C库的单元测试而编写的.
这是我必须做的才能使浮动工作.
代码在模板函数中:
template
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 {
...
相当丑陋不是吗?使用浮点数作为args会产生不良输出.也许是因为使用_snprintf()?
多年前我会使用%lg,这样就行了.不再.