-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 は常にゼロです。float を int で割ることと関係がありますか?

4

5 に答える 5

10

ここでは、両方の変数が整数であるため、整数除算を実行しています。

activeCircleRadius / numSteps

整数除算の結果は整数です。結果は切り捨てられます。

この問題を解決するには、1 つ (または両方) の変数の型を次のように変更しますfloat

float stepSize = 0.0f;
float activeCircleRadius = 10;

または、除算式に float へのキャストを追加します。

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.0/24.0 ではなく、10/24 です。ゼロ以外の答えを得るには、1 つの変数を double または float にする必要があります。

于 2012-08-12T08:01:13.967 に答える
0

整数除算を行っているため、答えに小数点以下の桁数はありません。変更してみてください:

stepSize = activeCircleRadius / numSteps;

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