在用 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);
我读过这个线程:
但我仍然不明白为什么int fahr = celsius / 5 * 9 + 32;
有效但无效int fahr = 9/5 * celsius+32;
?