3
int c;
int f = 20;
c = 5 / 9 * (f - 32);
Console.WriteLine(c);
Console.ReadLine();

如果我运行此代码 c 最终为 0,这是错误的。谁能告诉我为什么?

4

3 回答 3

8

因为您的计算是以整数类型进行的。我相信c是双类型变量。

c = 5d / 9 * (f - 32.0);

使用32.0or32d这样的操作数之一是double,也对 . 执行相同的操作5/9

您还需要定义c为双精度。

于 2013-01-21T11:39:43.343 回答
3

问题出在下面一行;

5 / 9

因为 c 和 f 是整数。例如,如果我让你将 11 除以 10;你会告诉我结果是 1.1。假设您不了解浮点运算,那么您会说要么不能将 11 除以 10;要么 或者你会说它是 1。运行时环境也是如此,它说它是 0,因为你声明了一个整数。

于 2013-01-21T11:40:33.987 回答
1

哈比卜已经解释了正在发生的事情。如果您不想更改c为浮点数或双精度数,可以执行以下操作:

c = (int)Math.Round(5.0 / 9.0 * (f - 32.0));
于 2013-01-21T11:58:44.457 回答