C#数学师不正确

时间:2012-09-11 14:36:56

标签: c# math division

  

可能重复:
  Division returns zero
  simple calculation not working for some reason

为什么:

int prozent = (totalkcals / 2000) * 100;

返回0?

总票房是567,我仔细检查过它。

4 个答案:

答案 0 :(得分:6)

这是因为integer division

  

除法将结果舍入为零,结果的绝对值是最大可能的整数,小于两个操作数的商的绝对值。当两个操作数具有相同符号时,结果为零或正数;当两个操作数具有相反符号时,结果为零或负数

答案 1 :(得分:3)

因为整数分裂。

double prozent = ((double)totalkcals / 2000) * 100;

答案 2 :(得分:2)

567/2000 = 0.2835,当转换为int(由数据类型指定)时变为零。 0 * 100 = 0。

所以:double prozent = ((double)totalcals / 2000.0) * 100.0;

答案 3 :(得分:1)

因为它是一个整数计算,所以从(totalkcals / 2000)开始的操作返回0;