Java中數值型別之間轉換的規則
阿新 • • 發佈:2018-12-31
在我們進行數值相關操作的時候,很多時候都會進行不同型別的相關操作:避免不了存在數值型別之間的轉換。
那java中數值型別轉換的規則是什麼呢?有些會不丟失精度轉換,而有些會丟失精度。
1.如果兩個運算元中有一個是double型別,另一個運算元就會轉換為double型別
2.否則,如果其中一個運算元是float型別,另一個運算元就會轉換為float型別
3. 否則,如果其中一個運算元為long型別,另一個運算元將會轉換為long型別
4.否則,兩個運算元都將被轉換為int型別。
由上面可以得出,在java數值型別轉換的時候,兩個運算元都會轉換為範圍比較大的那個運算元的型別。當範圍大的轉換為範圍比較小的數值型別將會存在精度丟失。
byte ——>short 不會丟失
short ——》int 不會丟失
char ——>int 不會丟失
int ——>long 不會丟失
int ——>double不會丟失
float——>不會丟失
int ——>float 會丟失精度
int ——>double 會丟失精度
long——>float會丟失精度
long——>double會丟失精度
當我們進行操作的時候,有時候需要將浮點型別轉換為整型,這樣的話就會使用到強制型別轉換。
double x = 9.17;
int i = (int) x;
System.out.println(i);
得到的結果將會是9,會截斷相關的小數點後面的數值。當我們需要進行舍入運算,可以使用Math.round()方法。