Javaのフロートとは何ですか?


102

私はこのコードを書きました:

float b = 3.6;

そして私はこれを手に入れます:

エラー:未解決のコンパイル問題: 
    タイプの不一致:doubleからfloatに変換できません

どうして?の定義はfloat何ですか?



1
@Sneftelこれはこの質問の複製ではありません。この質問はなぜそれがコンパイルされないのかを尋ねます(答えは「fリテラルにa を追加する必要がある」です)、他の質問はなぜ追加する必要があるのか​​を尋ねますf。それらは関連していますが、重複ではありません。
Mark Rotteveel

meta.stackexchange.com/questions/217401/…を参照してください。リンクされた質問に対する回答は、この質問に対する回答です。
Sneftel

回答:


180

Javaでは、10進数を3.6と入力すると、として解釈されますdoubledoubleは64ビット精度のIEEE 754浮動小数点floatですが、32ビット精度のIEEE 754浮動小数点です。a floatはa よりも精度が低いためdouble、暗黙的に変換を実行することはできません。

フロートを作成する場合は、数値の末尾をf(::)にする必要があります3.6f

詳細については、Javaチュートリアルのプリミティブデータ型の定義をご覧ください


40

成功する

float b= 3.6f;

浮動小数点リテラルの接尾辞がASCII文字のFまたはfの場合、浮動小数点リテラルはfloat型です。それ以外の場合、タイプはdoubleであり、オプションで、AまたはDのASCII文字のサフィックスを付けることができます。


文字列が浮動小数点値のみかどうかを確認する方法はありますか?
MasterJoe

13

問題は、10進数はデフォルトで2倍になることです。また、doubleはfloatに適合しないため、意図的にfloatを定義することを明示的に伝える必要があります。だから行く:

float b = 3.6f;

8

JAVAでは、次のような値になります。

  1. 8.5
  2. 3.9
  3. (等々..)

floatではなくdoubleと見なされます。

問題を解決するためにキャストを実行することもできます。

float b = (float) 3.5;

別の解決策:

float b = 3.5f;

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.