1. 程式人生 > >Java之路:截尾、舍入與提升

Java之路:截尾、舍入與提升

截尾和舍入

在執行窄化轉換時,必須注意截尾與舍入的問題。例如:如果將一個浮點數轉換為整型值,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