2016-11-26 15 views
-1

私は、Javaの演算子と異なるデータ型との関係がある場合、より大きなデータ型に昇格していることを知っています したがってdoubleはfloatよりも大きいので、たとえば異なるデータ型操作double float

double z=39.21; 
float w=2.1F; 
System.out.println(z+w); 

結果z + wはダブルタイプになります。 Fをfloatデータ型に置かないと、floatはdoubleとみなされます。

なぜ、以下のコードがコンパイルされないのですか?

double z=39.21; 
float w=2.1; 
System.out.println(z+w); 

zとwの両方がdoubleと見なされた場合、結果は2倍にならないはずですか? は、その代わりに、スロー:

Arithmetic.java:26: error: incompatible types: possible lossy conversion from double to float 
float w=2.1; 
     ^
1 error 

また、とき

short x = 14; 
float y = 13; 
double z = 30; 
System.out.println(x * y/z); 

まず、ショートはintに変換されます。その後、intはFloatに変換されます。その後、乗算が行われます。

なぜこの場合はコンパイルされますか?FとDの間にはF?

あなたは私を助けることができることを理解できないようですか?

答えて

1
float w = 2.1; // error 

デフォルトでは、2.1はダブルリテラルです。

コンパイラーは、狭変換を実行する準備ができているという保証が必要なので、リテラルの後ろにF(またはf)が必要です。

F(OR f)を入力しないと、コンパイルエラーが発生します。

float y = 13; // works successfully. 

他方、13は整数リテラルです。だから、簡単に浮動小数点型になります。したがって、コードは正常に動作します。

関連する問題