そのため、誰もが次のコードを記述すると、「精度が失われる可能性があります」というエラーが発生することを投稿しています。
float c= 30.123;
同じコードを試してみましたが、「型の不一致: double から float に変換できません」というエラーでコンパイルが失敗しました。これをJava 7で実行しています。
誰が何が起こっているか知っていますか?
30.123
は暗黙的にdouble
です。コンパイラは、変数にdouble
値を代入すると精度が失われることを通知しています。float
成功する
float c = 30.123f;
さまざまな IDE からさまざまなエラー メッセージが表示されます。その行をファイルに入れて、3 つの IDE でチェックし、コマンド プロンプトからコンパイルしようとしたところ、4 つの異なるエラー メッセージが表示されました。
コマンド・プロンプト:
C:\Users\Bill\Desktop>javac Num.java
Num.java:5: error: possible loss of precision
float c= 30.123;
^
required: float
found: double
1 error
IntelliJ:
互換性のないタイプ。
必須: float
検出: double
日食:
型の不一致: double から float に変換できません
ブルーJ:
必要な精度が失われる可能性が
あります: float; 見つかった: ダブル