日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java long to float_为什么Java中long可以自动转换成float

發布時間:2023/12/4 java 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java long to float_为什么Java中long可以自动转换成float 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java中,long型是64位的,float型是32位的。為什么long型可以自動轉float型呢?

這里就涉及到浮點數在內存中的存儲問題了。對于byte,short,int,long四個整數類型而言,它們在內存中無一例外都是直接換算成二進制存儲的,所以我們可以直接計算出它們的最大值。二進制的第一位是符號位不計算入數值,拿byte來說,數據存儲形式就是0000-0000,一個字節占八位,除去第一位符號位外,后邊全為1的話就是0111-1111,換算成十進制答案是127.

至于為什么最小的數是-128呢,這又有講究了。計算機中負數是以補碼形式存儲的,一般說來,八位以內最小的負數應該是11111-1111,我們對其取反,結果就是1000-0000,再得到補碼即1000-0001。是的,0001,補碼是原碼除符號位外逐位取反再加一的結果,但是對于補碼而言1000-0001并不是八位二進制能表示的最小的數,最小的應該是1000-0000,對1000-0000求原碼,就得到了1001-0000-0000,即我們十進制數的-128。同樣的,對于short等其它整數類型也一樣。

那么,float類型呢?4個字節,32位,第1位是符號位(數符),即S,接下來的8位是指數域(階碼),即E,最后的23位,是小數域(尾數),即M。對于一個十進制數112.5,我們用科學計數法表示就是1.12510^2,所以呢,對于一個二進制數,我們的表示就應該是1.XXX 2X,由于第一位永遠都是1所以直接省去,因此表示為S.M*2E。所以float的取值范圍是-2128到2128,遠遠大于long的最大值。

所以java中long類型自動轉換為float類型。

簡單來說因為浮點數用科學計數法存儲的,而整數是用二進制存儲的。所以雖然long型是64位的,float型是32位,但是float型所能表示的數要遠遠大于long型。

總結

以上是生活随笔為你收集整理的java long to float_为什么Java中long可以自动转换成float的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。