为什么它会返回0?
print(70 * (50 / 100));
70 * 0,5 = 35
我不知道为什么会这样。或者我犯了一些愚蠢的错误......我不知道
答案 0 :(得分:5)
50/100
是整数之间的区分。自50<100
起,结果为0,因此70*(50/100)
会产生0。
如果你想避免这种情况,你必须将其中一个投射为double
。
70 * (50 / (double)100)
或
70 * ((double) 50/ 100)
答案 1 :(得分:2)
分割两个整数时,结果始终为整数。例如,7 / 3 is 2
。
所以在50/100 is equal to 0.35
并且因为你正在潜水两个整数,它将忽略小数位,所以它将是零 - 0,所以计算机将其视为:(忽略.35)
70 * 0 = 0
P.S
也许你可以稍微探讨一下调用Decimal.Divide,你的int参数会被隐式转换为Decimals,所以.35不会被忽略。
您还可以通过将至少一个参数显式地转换为浮点类型来强制对int参数进行非整数除法,例如:
int a = 42;
int b = 23;
double result = (double)a / b;
它是怎么来的......:)
答案 2 :(得分:1)
因为/
会输出int
而非double
值。结果应该是0.5,0将被视为int
,然后它将乘以70,结果将为0.
你需要按如下方式进行演员表:
double x = 50/(double)100 ;
然后:
print(70 * x);
答案 3 :(得分:-3)
50 / 100
为0
,70 * 0
为0
。