3

私はAndroid用の新しいIOIOを使おうとしていて、信号の周波数を見つける必要がありました。
そこで、信号を2進数に変換してから、1を1の間の時間で割った値を計算しました。これを行ったとき、出力として0が得られたことがわかりました。それから私は1/2が私に何を与えたかを見ることに決めました、そして私の驚いたことにそれはまた0を与えました!なぜこれが当てはまるのか誰にも分かりますか?

コード: private float frequency = 1/2;

これは使用することと関係がありFloat.toString(frequency)ますか?

4

8 に答える 8

11

これは整数除算の例です。試す:

private float frequency = 1.0/2.0;

Javaは1/2を実行し、0.5を生成します。ただし、Javaはこれを整数に対する演算と見なすため(0.5は整数ではありません)、小数を切り捨てて整数部分0だけを残します。Javaにfloat(1.0対1)を処理するように指示すると、次のようになります。中間計算の小数部分を保持するように指示します。

于 2012-05-11T17:06:32.153 に答える
5

1と2はJavaの整数です。それらをフロートとして明示的に解釈したい場合は、実行する必要があります。

private float frequency = 1f/2f;

数学が実際に最初にダブルで行われるかどうかを気にしない場合は、これだけが読みやすくなります。

private float frequency = 1.0/2.0;
于 2012-05-11T17:07:48.287 に答える
1

キャストする必要があります。詳細はこちら

float myValue = (float) 1/2;

class Main {
    public static void main(String[] args) {
        float myValue = (float) 1/2;
        System.out.println("1/2 = " + myValue);
    }
}

出力は1/2 = 0.5

于 2012-05-11T17:42:03.280 に答える
1

これは整数除算です(整数のみ)。

試す:

private float frequency = 1/2.0;
于 2012-05-11T17:06:39.753 に答える
1

1と2は整数であり、整数を返します。

除算を行う前に、これらの値を使用して2つのフロートを作成してみてください。

于 2012-05-11T17:07:26.043 に答える
0

整数で算術演算を行うと、結果は整数になり、.0も追加されます

それで

private float frequency = 1.0/2.0;
于 2012-05-11T17:07:56.650 に答える
0

使用する

    private float frequency = 1F/2F;
于 2012-05-11T17:17:39.430 に答える
0

2つの整数を除算していて、正しい出力が得られない場合は、評価int結果をfloat次のようにキャストします。

    int b = 2;
    int a = 1;

    float out = (float) a / b;
    System.out.println(out);

これにより、出力0.5が生成されます

于 2017-10-17T13:59:30.047 に答える