為什麼float比long型別的資料範圍大

2021-09-25 23:21:35 字數 670 閱讀 3201

float比long型別的資料範圍大。

float:4個位元組

long:8個位元組

為什麼float的4個位元組比long型別的8個位元組的範圍大?

因為整數與小數的底層儲存有點不同。

相同點:它們都是用二進位制儲存的

不同點:

小數先轉成二進位制,然後處理,然後儲存。

符號位 其中最左邊的為符號位,0為正,1為負。

指數 接下來的e是指數,一共8位,也用二進位制來表示。ieee規定,在float型別中,用來計算指數的偏移量為127(即存貯指數時要在原基礎上+127)。

尾數 最後的f是小數部分,尾數正是由這23位的小數部分+1位組成的。

float實際指數的取值範圍為-126~+127(其中-127和128作為特殊規定)

於是float的取值範圍為(尾數字最小值)-2* 2^127 到(尾數字最大值)+2*2^127

即-2^128到+2^128,表示為十進位制為-3.4*10^38到+3.4*10^38

而long的範圍是

-9223372036854775808~9223372036854775807(只有19位)

所以float的範圍遠大於long,但是如果將long強制型別轉換為float可能會出現經度損失(float的精度為科學記數法的小數點後6~7位)。

為什麼 比list()更快?

我最近比較了和list 的處理速度,並且驚訝地發現執行速度比list 快三倍以上。我跑了相同的測試與 和dict 結果幾乎相同 和 兩個花了大約0.128sec 百萬次,而list 和dict 大約花費每個0.428sec 萬次。後來我查了查原因,得到的結論如下 list 需要全域性查詢和函式呼叫,...

為什麼給long型別的變數初始化需要加L?

byte a 30 short b 30000 int c 200000000 long d 74000000000l 等號後面的這些數字不僅僅只是數字,這些數字其實是常量。這些式子的真正含義是說將常量轉化為變數。30,30000,200000000這三個數系統預設將他們作為int型別的常量,在對a...

為什麼get比post更快

get和post在面試過程中一般都會問到,一般的區別 1.post更安全 不會作為url的一部分,不會被快取 儲存在伺服器日誌 以及瀏覽器瀏覽記錄中 2.post傳送的資料量更大 get有url長度限制 3.post能傳送更多的資料型別 get只能傳送ascii字元 4.post比get慢 我相信不...