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。 –