Java 简单除法运算返回零?

Java 简单除法运算返回零?,java,Java,我错过了什么 float stepSize = 0.0f; int activeCircleRadius = 10; int numSteps = 24; AiLog.v("init activeCircleRadius " + activeCircleRadius + " numSteps " + numSteps); stepSize = activeCircleRadius / numSteps; AiLog.v("stepSize is " + step

我错过了什么

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);

操作后,日志中的步长始终为零。这与浮点除以整数有关吗?

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

 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;
activeCircleRadius / numSteps
整数除法的结果是一个整数。结果被截断

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

float stepSize = 0.0f;
float activeCircleRadius = 10;
或在除法表达式中添加要浮动的强制转换:

stepSize = (float)activeCircleRadius / numSteps;

不要做整数除法

stepSize = activeCircleRadius / (float)numSteps;

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

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

stepSize = activeCircleRadius / numSteps;


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

这应该有助于程序编译,但不能解释问题。;)无论如何,没有编译问题。0=0.0f我在代码中已经把它作为0.0f了,只是没有在这里这样输入。A
float/int
是一个
float
如果你的示例没有编译,我会检查你的代码到底是什么。它编译了。步长值始终为零。float-activeCircleRadius=10.0;它显示类型不匹配错误。就是这样。我不知道整数对浮点division@Zed那就接受他的回答吧@哦,对不起。。。以为你有足够的时间:)
stepSize = activeCircleRadius / (float)numSteps;