float TFA;
DWORD TDD;
CString TFS;
TFA=-96;
TDD=0xC2C00000;
TFS.Format("%X %f %X %f",TFA,TFA,TDD,TDD);
AfxMessageBox(TFS);TFS输出结果为:0 0.000000 C0580000 -35184397615104.000000
怎么会这样呢?

解决方案 »

  1.   

    字符串转换格式不对,必须和变量类型一致才行
    float TFA;
    DWORD TDD;
    CString TFS;
    TFA=-96.0f;
    TDD=0xC2C00000;
    TFS.Format("%5.1f %5.2ff %04X %ld",TFA,TFA,TDD,TDD);
    AfxMessageBox(TFS);
    这么改试试
      

  2.   

    类型不匹配,格式化数据时要特别小心!数据不匹配时,轻则乱七八糟,重则程序崩溃加格式数据类型强制:TFS.Format("%X %f %X %f",(DWORD)TFA,(float)TFA,(DWORD)TDD,(float)TDD);
      

  3.   

    Format、printf等带不定参数的函数,只按二进制方式解析参数,不会检查参数的类型
      

  4.   

    如果你想分析是为什么会出来这个结果 楼上说的就对了 
    二进制解析 DWORD 和 FLOAT 的所占的位数不同,所有取得的数据就会有错误