简单的除法运算返回零?

我错过了什么?

float stepSize = 0.0f; int activeCircleRadius = 10; int numSteps = 24; AiLog.v("init activeCircleRadius " + activeCircleRadius + " numSteps " + numSteps); stepSize = activeCircleRadius / numSteps; AiLog.v("stepSize is " + stepSize); 

操作后,日志中的stepSize始终为零。 是否将浮点数除以int?

这两个变量都是整数,因此您执行整数除法:

 activeCircleRadius / numSteps 

整数除法的结果是整数。 结果被截断。

要解决此问题,请将一个(或两个)变量的类型更改为float

 float stepSize = 0.0f; float activeCircleRadius = 10; 

或者在除法表达式中添加一个转换为float:

 stepSize = (float)activeCircleRadius / numSteps; 

不做整数除法

 stepSize = activeCircleRadius / (float)numSteps; 

总结:是的,因为您将activeCircleRadius除以整数。

整数除法将结果为0. 10/24而不是10.0 / 24.0。 你需要将一个变量设为double或float以获得非零答案。

  With all arithmetic operators in Java, the result has the type of the largest operator. For instance: - float operator long => float - int operator int => int - int operator long => long float stepSize = 0f; float activeCircleRadius = (float) 10.0; int numSteps = 24; stepSize = activeCircleRadius / numSteps; 

你正在进行整数除法,因此在你的答案中不会得到任何小数位。 尝试改变:

 stepSize = activeCircleRadius / numSteps; 

 stepSize = activeCircleRadius / (float)numSteps;