C++: Thông số định dạng printf()
cho float
là gì? (Visual C++)C++: Thông số định dạng printf() cho "phao" là gì?
Trước đây tôi đã sử dụng %g
cho float
và %lg
cho double
.
Dường như thông số đã thay đổi và float
không được xác định và double
là %g
.
Tôi có các bit trong bộ nhớ mà tôi đang in ra để việc truyền không phải là một tùy chọn.
Có cách nào để tôi có thể in ra float
giá trị sử dụng printf()
không?
Cập nhật:
Mã này được viết cho đơn vị thử nghiệm chung C++ libs sử dụng trên một hệ thống nhúng. Đây là những gì tôi phải làm để có được float
hoạt động. Mã này là trong một mẫu chức năng:
template <typename T,typename TTYP,typename Ttyp,int bits,bool IsSigned>
Error testMatrixT()
{ ...
Dưới đây là một ảnh mã:
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 {
...
Khá xấu xí không phải là nó? Sử dụng phao như args cung cấp cho đầu ra xấu. Có thể do sử dụng _snprintf()
? Năm trước tôi sẽ sử dụng %lg
và nó sẽ là OK. Không còn nữa.
Đây là câu hỏi thứ 3 hoặc thứ 4 tôi đã thấy, trong nhiều ngày, về việc in nổi! – Praetorian
Bạn đã không đề cập đến những gì sẽ xảy ra nếu bạn sử dụng% g. Nhưng% g không phải là mặc định cho phao. – steve
@steve: '% g' hoạt động cho float, vì nó được tăng gấp đôi. –