c++遇到的bug

第五题我本来想用longlong的但是出现了error听说是v6不承认longlong但是用了long出现的百分数是0呢?!!... 第五题

我本来想用long long 的但是出现了error 听说是v6不承认long long 但是用了long 出现的百分数是0呢?!!
展开
 我来答
Rudiestf
2013-08-27 · TA获得超过260个赞
知道小有建树答主
回答量:244
采纳率:0%
帮助的人:196万
展开全部
问题出在
float F=UP/WP;
这句上面。

c++中,变量的运算是与类型有关的。整数的乘除法,得不到小数,比如:
int a=1;
int b=3;
a/b的结果不是0.33333...而是0。
long神马的也一样。

float F=UP/WP;这句到底发生了什么?
1首先计算UP/WP,会得到0
2将计算得到的“0”转化为float型的数字,再赋值给F。

如果你想精确的计算,那么建议你这样:
float F=(float)UP/WP;
这样的话,会发生:
1首先将UP转化为float型的变量
2计算UP/WP时,因为WP是整型,根据规则,WP会被转化为float型
3计算UP/WP(这时两个变量都是float)
4将计算结果赋值给F
cbk808
2013-08-27 · TA获得超过383个赞
知道小有建树答主
回答量:479
采纳率:70%
帮助的人:282万
展开全部
你这是取整,把up wp改成float试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-27
展开全部
因为都是long型,所以45/1234是0.几,整型的话就把小数约掉了,于是就是0了。

你可以把所有的long和float都换成double,就好了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式