0

我对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));

有谁知道这里发生了什么以及如何解决它?

4

2 回答 2

4

这是整数除法。在 Java 中:

(30 * 50) / 1000 = 1

int i = (int) Math.ceil((30.0 * 50) / 1000);

会给你预期的结果。

于 2014-02-02T12:51:14.020 回答
1

integer/integer 将为您提供整数值 将任何值设为分母或分子作为浮点数您将得到答案

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);
于 2014-02-02T12:53:52.760 回答