-2

可能重复:
除法返回零
简单计算由于某种原因不起作用

为什么是这样:

int prozent = (totalkcals / 2000) * 100;

返回 0?

在这种情况下,totalkcals 是 567,我仔细检查了它。

4

4 回答 4

6

这是因为整数除法

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

于 2012-09-11T14:37:55.963 回答
3

这是因为整数除法。

double prozent = ((double)totalkcals / 2000) * 100;
于 2012-09-11T14:38:06.217 回答
2

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

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

于 2012-09-11T14:39:38.977 回答
1

因为是整数计算,所以(totalkcals / 2000)的运算返回0;

于 2012-09-11T14:38:58.230 回答