-2

我错过了什么?

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 始终为零。它与将浮点数除以整数有关吗?

4

5 回答 5

10

这里两个变量都是整数,所以你正在执行整数除法:

activeCircleRadius / numSteps

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

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

float stepSize = 0.0f;
float activeCircleRadius = 10;

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

stepSize = (float)activeCircleRadius / numSteps;
于 2012-08-12T07:55:53.217 回答
3

不要进行整数除法

stepSize = activeCircleRadius / (float)numSteps;

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

于 2012-08-12T07:56:52.203 回答
1
 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;
于 2012-08-12T07:53:26.777 回答
1

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

于 2012-08-12T08:01:13.967 回答
0

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

stepSize = activeCircleRadius / numSteps;

stepSize = activeCircleRadius / (float)numSteps;
于 2012-08-12T07:57:06.867 回答