为什么我的C#代码返回0,如果它必须是50?
double c = (1 / 2) * 100;
Console.WriteLine(c);
有什么不对?
答案 0 :(得分:5)
1
,2
和100
都是int
个文字。在C#中,整数除法返回整数,并忽略余数。只有在计算1/2(= 0)并乘以100(= 0)后,结果才会转换为double
(1.0/2) * 100
会给出预期的结果,因为现在1.0
是double
字面值,并且在执行计算之前也会强制将其他文字转换为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
代码段:
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