首頁  >  文章  >  Java  >  簡述java基本型別自動轉換

簡述java基本型別自動轉換

巴扎黑
巴扎黑原創
2017-08-01 11:33:431787瀏覽

具體自動提升類型如上圖所示。其中long->float的轉換一開始讓我感覺有點問題,因為long是64位的,而float卻是32位的。

遂找尋答案,參考部落格java中long到float的自動轉換引發的血案。

原因

首先要知道一點,float能表示的數的範圍比long大,那麼可想而知,一個long型數可以轉為float型。

  long類型,取值範圍是-9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807(-263 ~ 263##- 1)

  float類型,取值範圍是2^(-149) ---> (2-2^(-23))*2^127,也就是Float.MIN_VALUE和Float.MAX_VALUE

#任何一個long類型的數字都可以使用float類型的表示方法來表示。但是,由於float有精度限制,所以在轉換的過程中有可能丟失精度,

如311111111111111L ---->3.1111111E15---->3111111100465152,在轉換回來後就丟失了精確度

其次要知道float的32位是如何表示小數的(大學的電腦組成原理課程學過,但忘了,現在學習一下,希望可以記住)。

 

float記憶體儲存原理 

http://steve.hollasch.net/cgindex/coding/ieeefloat.html(IEEE754標準)

#( 1)在10進制中123.456可以被表示成1.23456 × 10

,在二進制中10100.110可以被表示成1.0100110 × 24

(2)浮點數有精度,超過精度的數無法被表示,如0.0000000000000001就是精確到小數點後x位。

(3)IEEE浮點數有三個部分組成:符號位(S),指數位(E),尾部(M),任何數字都能以二進位表示以為S*1.M*2

E

表示形式如下:
Single:

 

#(4)總結:float的表示範圍為

 

以上是簡述java基本型別自動轉換的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn