可能重复:
除法返回零
简单计算由于某种原因不起作用
为什么是这样:
int prozent = (totalkcals / 2000) * 100;
返回 0?
在这种情况下,totalkcals 是 567,我仔细检查了它。
可能重复:
除法返回零
简单计算由于某种原因不起作用
为什么是这样:
int prozent = (totalkcals / 2000) * 100;
返回 0?
在这种情况下,totalkcals 是 567,我仔细检查了它。
这是因为整数除法
除法将结果向零舍入,结果的绝对值是小于两个操作数的商的绝对值的最大可能整数。当两个操作数具有相同符号时结果为零或正,当两个操作数具有相反符号时结果为零或负
这是因为整数除法。
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;