C#中的算术运算

时间:2011-10-27 08:35:33

标签: c# .net

为什么我的C#代码返回0,如果它必须是50?

double c = (1 / 2) * 100;
Console.WriteLine(c); 

有什么不对?

7 个答案:

答案 0 :(得分:5)

在您的示例中,

12100都是int个文字。在C#中,整数除法返回整数,并忽略余数。只有在计算1/2(= 0)并乘以100(= 0)后,结果才会转换为double

(1.0/2) * 100

会给出预期的结果,因为现在1.0double字面值,并且在执行计算之前也会强制将其他文字转换为double

答案 1 :(得分:2)

1 / 2 = 0

这是整数除法。

尝试1.0 / 2,或为什么不直接double c = 50.0;)

答案 2 :(得分:2)

使用此:(浮动)1 /(浮动)2。 1和2是整数。

答案 3 :(得分:2)

尝试

double c = (1.0 / 2.0) * 100.0;

编辑:行动。 F是不必要的。 :(

答案 4 :(得分:2)

如果要将整数视为double,请使用后缀d或D

MSDN Link here

代码段:

double d = (1d / 2) * 100;

double d = (1 / 2d) * 100;

甚至

double d = (1d / 2d) * 100;

答案 5 :(得分:1)

编译器会将1和2的类型推断为System.Int32,而不是double

double c = (1.0 / 2.0) * 100;
Console.WriteLine(c); 

应该给你正确的结果

答案 6 :(得分:0)

我认为你需要^

double c = (1 / 2) * 100;
Console.WriteLine(c); 

结果:50