-1
我知道,當與Java中的操作符以及不同的數據類型有關時,結果是推廣到更大的數據類型 因此,因爲double大於float,所以當例如具有不同的數據類型操作double-float
double z=39.21;
float w=2.1F;
System.out.println(z+w);
結果z + w將是雙重類型。 如果我不把浮點數據類型放在F上,那麼浮點數假定爲雙精度浮點數。
那麼爲什麼下面的代碼不能編譯?
double z=39.21;
float w=2.1;
System.out.println(z+w);
不應該只是雙倍的結果,如果z和w都認爲是雙重的? 相反,它拋出:
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 ??????
我似乎無法理解這種情況,你能幫助我嗎?