俺调试了2天程序发现VC除法结果出错,俺用了一个浮点数除以整数,整数进行过数据转换,代码是这样的:
float a,b;
int c;
a=b/(float)c;
结果a的值是错误的
然后我又改成
float a,b,c;
a=b/c;
还是错误的,这里b=1.9577e+008 c=320 a等于9万多,怎么可能?

解决方案 »

  1.   

    好像不应该是那个结果啊……我一个朋友用pascal算的结果是0.几的,那个才是我要的结果啊……
      

  2.   

    俺用double试了一下,也不行啊……
    像b=1.多
    c=320
    相除应该是一个比b小的多的数啊……怎么也不可能会等于几万啊……
    我快郁闷死了……
      

  3.   

    这个楼主不用担心,实际上没错的,用这个代码打印一下a的值就知道了
    CString str;
    str.Format("%.10f",a);
    AfxMessageBox(str);
      

  4.   

    打印了一下,出来的值和quickwatch里的一样的,都是错的…………你打印出来等于多少???会是正确的吗?
      

  5.   

    b=1.9577e+008;//这是所谓的"科学计数法",1.9577是尾数,e+008表示指数是8,所以b的值是195770000,不是1.多.
    VC的调试器对于float类型一般只显示前6位有效数字,后面的就省略了.不过实际的值当然没有省略,用上面的代码打印一下就看清楚了.不信你可以试试这个判断if(a>611781.2)看看结果如何.
      

  6.   

    原来是科学计数法,俺才明白,原来结果是正确的……
    那么我朋友的pascal程序算出来的为何是另外一个值?