5

これらの2つのメソッドが同じ入力で異なる値を返す場合はありますか?

int compare1(float a, float b)
{
    return Double.compare(a, b);
}

int compare2(float a, float b)
{
    return Float.compare(a, b);
}

同様に、JavaのFloatに格納できる数値は、精度を失うことなくJavaのDoubleに格納できるというのは本当(または間違っている)ですか?

ありがとう

4

3 に答える 3

8

はい; ダブルスをフロートにキャストすると、異なる結果が得られる可能性があります。

aとの差bが小さすぎてフロートに表示されない場合は、戻りますが、compare2()戻りません。0compare1()


質問を編集して、質問内容を逆にしました。新しい答えは次のとおりです。

それらは常に同じであると私はほぼ確信しています。

于 2013-01-21T18:01:03.780 に答える
4

Everyfloatは として正確に表すことができますdoubleこのことから、2 つの関数は常に同じ結果を返すことがわかります。

于 2013-01-21T18:27:59.233 に答える
1

Adoubleは、 よりも小数点以下の桁数の精度が高くなりfloatます。それらの余分なビットがすべてゼロの場合、浮動小数点数と同じ値になります。そうです、すべての s は精度を失うことなく sfloatに変換できます。double

于 2013-01-21T18:09:56.120 に答える