【发布时间】:2013-04-18 00:31:57
【问题描述】:
当用 C 编写程序将摄氏度转换为华氏度时,以下公式给出了错误的输出:
int fahr = 9 / 5 * celsius + 32;
现在,我知道这可能是 9/5 被解释为整数的问题,但我不明白的是,使用 double 或 float它仍然会给出相同的错误输出。
奇怪的是,尽管将类型设置为int,但以下公式给出了正确的输出:
int fahr = celsius / 5 * 9 + 32;
此外,我注意到即使像下面这样简单的事情,当类型设置为 double 时,输出仍然是 1.0 而不是 1.8:
double x = 9 / 5;
printf("%lf\n", x);
我读过这个帖子:
C program to convert Fahrenheit to Celsius
但我仍然不明白为什么 int fahr = celsius / 5 * 9 + 32; 有效但 int fahr = 9/5 * celsius+32; 无效?
【问题讨论】:
-
因为 9 和 5 被视为整数。试试 9.0/5.0
-
这是一个典型的新手错误。
-
因为真正的男人使用 Kelvin ;)
标签: c