为了账号安全,请及时绑定邮箱和手机立即绑定

为什么除法的结果是零而不是小数?

为什么除法的结果是零而不是小数?

C C++
慕妹3146593 2019-06-04 16:24:38
为什么除法的结果是零而不是小数?教自己C,发现当我做一个温度转换的方程时,除非我把分数改为十进制,否则它是行不通的。呃,tempC=(.555*(tempF-32))会起作用的但是tempC=((5/9)*(tempF-32))不管用。为什么?根据C Primer Plus,它应该可以工作,因为我使用的都是TEMPC和temf浮点数。
查看完整描述

3 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

在第二种情况下,似乎有整数除法:

tempC=((5/9)*(tempF-32))

这个5 / 9会被截断为零。

要解决这个问题,您需要将其中一个设置为浮点类型:

tempC=((5./9.)*(tempF-32))


查看完整回答
反对 回复 2019-06-04
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

当你做5/9,5和9都是整数和整数除法会发生的。整数除法的结果是一个整数,它是两个操作数的商。所以,在5/9的情况下,商数是0,由于乘以0,TEMPC得到了0。为了没有整数除法,至少两个操作数中的一个必须是float.

例如:如果您使用5.0/9或5/9.0或5.0/9.0,它将按预期工作。


查看完整回答
反对 回复 2019-06-04
?
jeck猫

TA贡献1909条经验 获得超7个赞

5/9是整数除法,而不是浮点数除法。这就是为什么你得到了错误的结果。

做5或9个浮点变量,你会得到正确的答案。

类似5.0/9或5/9.0


查看完整回答
反对 回复 2019-06-04
  • 3 回答
  • 0 关注
  • 1226 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信