无法将 Integer 更改为 Double,这导致我的代码失败

Can't change Integer to Double, and this cause my code to fail

我正在尝试将 x 除以 9,当 x 除以 9 returns 时大于 1 ,我继续我的代码。但是如果 x 是 10 呢? 10 除以 9 returns 1,1 表示您只能制作一件物品,0,1 应退还给您。

示例: 我有 64 个项目 a 并尝试创建另一个项目 b 至少需要 9 个项目 a 创建一项 b。如果我们将 64 除以 9,它 returns 7,1 这意味着我们最多可以获得 7 项 b。当我尝试用 Math.ceil() 将它四舍五入时,0,1 给了我 0.0。

有人知道我如何得到 64 / 9 中的 0,1 并将其四舍五入为一吗?

这是我试过的:

Integer getIronBlocks = ironIngots / 9;
Integer getGoldIngots = goldNuggets / 9;
double ironIngotLeft = Math.ceil(getIronBlocks);
double goldNuggetLeft = Math.ceil(getGoldIngots);

我已经知道这段代码的问题,但不知道如何解决。假设 ironIngots = 64,我们将它除以 9,我们得到 7 而不是 7,1。将 Integer getIronBlocks 更改为 Double getIronBlocks 将引发 IntelliJ 的错误

你需要使用double来存储结果并除以double。

    int ironIngots = 10;
    double getIronBlocks = ironIngots / 9.0;
    System.out.println("result : "+ getIronBlocks); // ---> 1.111111

https://ideone.com/Yz4yBO

如果除以一个整数,结果是一个整数。

问题是使用整数 class,结果的小数点丢失了。

所以你最终要做的是将 0 向上舍入,结果为 0。

如果您希望运算准确,请使用 BigDecimal。或 Double,但 Double 存在二元运算的准确性问题。