Java之路:截尾、舍入與提升
阿新 • • 發佈:2018-12-14
截尾和舍入
在執行窄化轉換時,必須注意截尾與舍入的問題。例如:如果將一個浮點數轉換為整型值,Java會如何處理呢?如果將29.7轉換為int,結果是30還是29?
public class Cast {
public static void main(String[] args) {
float f = 29.7f;
double d = 200.13213;
int i = (int)f;
System.out.println(i);
i = (int)d;
System.out.println(i);
}
}
【結果】
注意:在將float和double轉型為整型值時,總是對該數字執行截尾。如果想得到舍入的結果,就需要使用java.lang.Math
中的**round()**方法:
public class Cast {
public static void main(String[] args) {
float fabove = 0.7f, fbelow = 0.4f;
double dabove = 0.8, dbelow = 0.4;
System.out.println("fabove = " + Math.round(fabove));
System.out.println("fbelow = " + Math.round(fbelow));
System.out.println("dabove = " + Math.round(dabove));
System.out.println("dbelow = " + Math.round(dbelow));
}
}
【結果】
提升
如果對基本資料型別執行算術運算或按位運算,只要型別比int小(char、byte、short),那麼在運算之前,這些值都會自動轉換面int。
通常,表示式中出現最大的資料型別決定了表示式最終結果的資料型別。
如:將一個float型別值與一個double值相乘,結果為double;將一個int值與一個long值相加,結果為long。