【发布时间】:2012-09-11 22:39:38
【问题描述】:
可能重复:
Division returns zero
simple calculation not working for some reason
为什么会这样:
int prozent = (totalkcals / 2000) * 100;
返回 0?
totalkcals 在这种情况下是 567,我仔细检查了它。
【问题讨论】:
可能重复:
Division returns zero
simple calculation not working for some reason
为什么会这样:
int prozent = (totalkcals / 2000) * 100;
返回 0?
totalkcals 在这种情况下是 567,我仔细检查了它。
【问题讨论】:
这是因为integer division
除法将结果向零舍入,结果的绝对值是小于两个操作数的商的绝对值的最大可能整数。当两个操作数的符号相同时,结果为零或正,当两个操作数的符号相反时,结果为零或负
【讨论】:
这是因为整数除法。
double prozent = ((double)totalkcals / 2000) * 100;
【讨论】:
567 / 2000 = 0.2835,当转换为 int(由您的数据类型指定)时变为零。 0 * 100 = 0。
所以:double prozent = ((double)totalcals / 2000.0) * 100.0;
【讨论】:
因为是整数计算,所以(totalkcals / 2000)的运算返回0;
【讨论】: