int c;
int f = 20;
c = 5/9 * (f - 32);
Console.WriteLine(c);
Console.ReadLine();
如果我运行此代码c结束为0,这是错误的。谁能告诉我为什么?值不正确答案
int c;
int f = 20;
c = 5/9 * (f - 32);
Console.WriteLine(c);
Console.ReadLine();
如果我运行此代码c结束为0,这是错误的。谁能告诉我为什么?值不正确答案
因为您的计算是在整型中完成的。我相信c
是双重型变量。
c = 5d/9 * (f - 32.0);
使用32.0
或32d
所以操作数的一个是double
,也在做同样为5/9
。
另外您需要将c
定义为双倍。
问题出在下面一行;
5/9
因为c和f是整数。例如,如果我要求你将11到10分;你会告诉我结果是1.1。假设你不知道浮点运算,那么你会说要么不可能将11到10;或者你会说它是1.运行时环境不变,它说它是0,因为你声明了一个整数。
@lazyberezovsky你是正确的某一点;在这种情况下将f声明为整数。但不可能将c定义为int,将f定义为double。因此,如果两者都被声明为整数,即使f被移除,结果仍然是0。 – daryal
Habib已经解释了正在发生的事情。如果您不想将c
更改为浮点型或双精度型,请执行以下操作:
c = (int)Math.Round(5.0/9.0 * (f - 32.0));
'5/9'仍然为零。 – Rawling
@Rawling,在你评论之前编辑:D – Habib
实际上,你正在将'Double'结果放到这里,并将其放入c中,该c被声明为'int'。截断将发生并且问题将会返回。 – Oren