このコードスニペットを検討します。
int i = 0;
double d1 = (double) i;
long l = 0L;
double d2 = (double) l;
0.0
これを私のマシンで実行すると、両方の変換が印刷されます。しかしd1
、d2
これまでにないことはでき0.0
ますか?
私が理解しているように、これは仕様が言う拡張プリミティブ変換です:
拡大プリミティブ変換は、数値の全体的な大きさに関する情報を失うことはありません。
と同様
intまたはlong値をfloatに、またはlong値をdoubleに変換すると、精度が低下する可能性があります。
私が仕様を理解しているように、上記はint 0
常になるdouble 0.0
が、long 0
他の何か(例えば、そのようなもの)に変換できることを意味し1E-20
ます。私のスペックの解釈は正しいですか?