当商小于1时,Java分区不工作
我今天在编码的时候遇到了这个问题当商小于1时,Java分区不工作,java,Java,我今天在编码的时候遇到了这个问题 System.out.println(block.chance); // -> 10 float chanceFloat = block.chance / 100; System.out.println(chanceFloat); // -> 0.0 我不确定问题出在哪里。如果block.chance是一个整数,那么block.chance/100将作为整数除法执行(即结果被截断),然后转换为浮点 如果block.chance为正且小于100,则始
System.out.println(block.chance); // -> 10
float chanceFloat = block.chance / 100;
System.out.println(chanceFloat); // -> 0.0
我不确定问题出在哪里。如果
block.chance
是一个整数,那么block.chance/100
将作为整数除法执行(即结果被截断),然后转换为浮点
如果
block.chance
为正且小于100,则始终为0
最简单的修复方法是通过更改除法至少一侧的类型来确保除法需要浮点数。常见的习语是
float result = block.chance / 100.0;
你并不愚蠢,你只是不知道语言规则
block.chance
似乎是一个整数,两个整数的除法结果是一个整数,即使它被分配给一个float
cariable(那么就太晚了)
您的解决方案是使用以下方法之一:
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
是一个int
。如果是这样,我建议你读一读让我猜猜:block.chance
是整数吗?尝试float chanceFloat=block.chance/100f代码>