可能重复:
Division returns zero
simple calculation not working for some reason
为什么:
int prozent = (totalkcals / 2000) * 100;
返回0?
总票房是567,我仔细检查过它。
答案 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;