CString str1,str2;
double dd=4.55;
str1.Format("%.1f",dd);
AfxMessageBox(str1);
double tkmj=0.05;
str2.Format("%.1f",tkmj);
AfxMessageBox(str2);
我觉得str1,str2应该分别为4.6和0.1  可是我的程序输出是str1=4.5 而str2=0.1
奇怪!!!!求救。

解决方案 »

  1.   

    其实 Format()函数和C语言里的printf()函数一样的。你在输入格式上限制了输出小数后一位,这个函数是不做什么四舍五入的,它只是直接弃掉,而有管弃掉的数是什么。
      

  2.   

    不管是四舍五入的还是直接弃掉,我觉得我上面的两个例子的处理方式应该是一致的。可为什么不是呢?
    我 还试了当dd=1.55时,str1=1.6,结果和str2一致。
    ?????????????
      

  3.   

    补充一点,至于那个STR2的值,你定义的是doudle型,它是有值的(0。05)
    格掉后不能变成0。0,只能是一个最小的值。
      

  4.   

    按你的说法,那么如果我的double 值是1.55的话,那么结果应该是1.5,可是我的程序运行结果确实是1.6
      

  5.   

    是有点没道理,我做了个对照
    dd        显示
    0.55      0.6
    1.55      1.6
    2.55      2.5
    30.55     30.6
    90.55     90.5
    100.55    100.6
    到底怎么回事,GZ!!!