问一个巨郁闷的问题请大家帮帮忙(急)

lenpro 2003-08-24 10:13:12
俺调试了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万多,怎么可能?
...全文
18 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
riverboat 2003-08-24
  • 打赏
  • 举报
回复
那没准就是赋值的时候写错啦
lenpro 2003-08-24
  • 打赏
  • 举报
回复
是6.117812
akiko 2003-08-24
  • 打赏
  • 举报
回复
是多少?不是611781.25么?
lenpro 2003-08-24
  • 打赏
  • 举报
回复
原来是科学计数法,俺才明白,原来结果是正确的……
那么我朋友的pascal程序算出来的为何是另外一个值?
jiajie828 2003-08-24
  • 打赏
  • 举报
回复
记录
akiko 2003-08-24
  • 打赏
  • 举报
回复
b=1.9577e+008;//这是所谓的"科学计数法",1.9577是尾数,e+008表示指数是8,所以b的值是195770000,不是1.多.
VC的调试器对于float类型一般只显示前6位有效数字,后面的就省略了.不过实际的值当然没有省略,用上面的代码打印一下就看清楚了.不信你可以试试这个判断if(a>611781.2)看看结果如何.
lenpro 2003-08-24
  • 打赏
  • 举报
回复
打印了一下,出来的值和quickwatch里的一样的,都是错的…………

你打印出来等于多少???会是正确的吗?
akiko 2003-08-24
  • 打赏
  • 举报
回复
这个楼主不用担心,实际上没错的,用这个代码打印一下a的值就知道了
CString str;
str.Format("%.10f",a);
AfxMessageBox(str);
lenpro 2003-08-24
  • 打赏
  • 举报
回复
俺用double试了一下,也不行啊……
像b=1.多
c=320
相除应该是一个比b小的多的数啊……怎么也不可能会等于几万啊……
我快郁闷死了……
vcforever 2003-08-24
  • 打赏
  • 举报
回复
没错啊!
lenpro 2003-08-24
  • 打赏
  • 举报
回复
好像不应该是那个结果啊……我一个朋友用pascal算的结果是0.几的,那个才是我要的结果啊……
廖秀锋 2003-08-24
  • 打赏
  • 举报
回复
我是说的a
廖秀锋 2003-08-24
  • 打赏
  • 举报
回复
大概要用double型
harrypotter 2003-08-24
  • 打赏
  • 举报
回复
我这儿没错啊,是611781
timepalette 2003-08-24
  • 打赏
  • 举报
回复
pascal笨,不认识

16,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧