当商小于 1 时,Java 除法不起作用



当我遇到这个问题时,我今天正在编码。

System.out.println(block.chance); // -> 10
float chanceFloat = block.chance / 100;
System.out.println(chanceFloat); // -> 0.0

我不确定问题出在哪里。

你不傻,你只是不知道语言规则。

block.chance似乎是一个整数,两个整数的除法结果是一个整数,即使它后来被分配给一个float的(那么为时已晚(。

您的解决方案是使用以下之一

float chanceFloat = block.chance / 100.0;
float chanceFloat = block.chance / 100.0f;
float chanceFloat = block.chance / 100.f;
float chanceFloat = block.chance / 100f;
float chanceFloat = (float)block.chance / 100;

如果block.chance是整数,则block.chance/100将作为整数除法执行(即,结果被截断(,然后转换为浮点数。

如果block.chance为正且小于 100,则始终为 0。

最简单的解决方法是通过更改除法至少一侧的类型来确保除法需要浮点数。常见的成语是

float result = block.chance / 100.0;

最新更新