Java數值類型之間轉換


Java之間的數值轉換如圖所示,實心箭頭代表無數據丟失,虛線箭頭代表可能丟失

例如:123456789是一個大的整數,包含的位數比float類型能夠表達的位數多,但這個數轉換為float類型時,將會得到同樣大小的結果,但卻失去了一定的精度。

int n = 123456789;
float f =n;        //f is 1.23456792E8

當轉換前后兩個數進行二元操作時(例如n+f,n為整數,f為浮點數),則先將兩個操作數轉換為同一個類型,再進行計算。

轉換規則:

--如果兩個操作數中有一個是double類型,另一個操作數就會轉換為double類型。

--否則,如果其中一個操作數是float類型時,另一個操作數將會轉換為float類型。

--否則,如果其中一個操作數是long類型時,另一個操作數將會轉換為long類型。

--否則,兩個操作數都將會被轉換為int類型。

 

強制轉換類型

在Java中允許進行像int轉換為double類型或者double轉換為int,但有可能丟失一些信息。如像強制轉換類型,則需要通過強制類型轉換(cast)實現。強制類型轉換的語法格式是在圓括號中給出想要轉換的目標類型,后面緊跟待轉換的變量名

例如

double x = 9.887;
int nx = (int)x;

變量nx的值為9。強制類型轉換通過截斷小數將浮點值轉換為整型。

如果想將浮點數進行舍入運算,以得到最接近的整數,就需要使用Math.round方法:

double x = 9.887;
int nx = (int)Math.round(x);

現在變量nx的值為10.調用round的時候仍然需要使用強制類型轉換(int)。原因為:round方法返回結果為long類型,由於存在信息丟失可能性,所以只有使用顯式的強制類型轉換才能夠將long類型轉換為int類型。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM