我对Java有这个非常奇怪的问题。基本上,这是正在发生的事情:
int i = (int) Math.ceil((30 * 50) / 1000);
与
相同 int i = (int) Math.ceil(1.5);
但它不返回2,它返回1!但是,第二行确实返回2!这真的很奇怪......
如果有帮助,这是实际的代码行:
pStats.setPlayerEnergy(
player,
pStats.getPlayerEnergy(player)
+ (int) Math.ceil((pStats.getPlayerFoodTick(player) * pStats
.getPlayerHydrationTick(player)) / 1000));
有没有人知道这里发生了什么以及如何解决它?
答案 0 :(得分:4)
这是Integer部门。在Java中:
(30 * 50)/ 1000 = 1
int i = (int) Math.ceil((30.0 * 50) / 1000);
会给你预期的结果。
答案 1 :(得分:1)
整数/整数将给你整数值使任何值分母或分子作为浮点数你会得到答案
int i = (int) Math.ceil((30 * 50) / 1000.0);
or
int i = (int) Math.ceil((30.0 * 50) / 1000);
or
int i = (int) Math.ceil((30 * 50.0) / 1000);