web-dev-qa-db-ja.com

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

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

float b = 3.6;

私はこれを取得します:

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

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

86
t0mkaka

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

フロートを作成する場合は、f(つまり、3.6f)で数字を終了する必要があります。

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

165
Nicolas

作って

float b= 3.6f;

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

37
Jigar Joshi

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

float b = 3.6f;
13
Jan Zyka

Javaでは、次のような値:

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

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

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

float b = (float) 3.5;

別の解決策:

float b = 3.5f;

6
Carlos Sá