整数除法的浮点数结果

3
我需要将两个整数相除并得到一个浮点数作为结果。
我的代码:
Float ws;
int i = Client.getInstance().getUser().getGespielteSpiele() -Client.getInstance().getUser().getGewonneneSpiele();
int zahl1 = Client.getInstance().getUser().getGewonneneSpiele();

ws = new Float((zahl1 / i));

我使用调试器检查数值

i = 64

zahl1 = 22

ws = 0.0

ws的结果为0.0的原因是什么?我应该怎么做才能得到正确的浮点数?

4个回答

7

当你将两个 int 相除时,实际上是执行整数除法,这种情况下,22/64 = 0。只有在此基础上创建了一个 float。而且,0float 表示形式为 0.0。如果你想要执行浮点数除法,你应该在除法之前进行强制类型转换:

ws = ((float) zahl1) / i;

很好,谢谢,这个解决方案正确且解释得很好 :) - The Kanguru

3

这是因为您正在进行整数除法,您需要先将int值更改为float。

float ws = (float) zahl1 / i;

3

zahl1 / i是通过整数除法计算,然后通过Float构造函数转换为浮点数。如果要进行浮点数除法运算,请将其中一个操作数强制转换为floatdouble

ws = new Float((float)zahl1 / i);

2

尝试:

float ws = (float)zahl1/i;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接