0

そのため、誰もが次のコードを記述すると、「精度が失われる可能性があります」というエラーが発生することを投稿しています。

float c= 30.123;

同じコードを試してみましたが、「型の不一致: double から float に変換できません」というエラーでコンパイルが失敗しました。これをJava 7で実行しています。

誰が何が起こっているか知っていますか?

4

1 に答える 1

6

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; 見つかった: ダブル

于 2013-10-19T01:06:26.673 に答える