float和double取值範圍

2021-09-26 15:09:21 字數 1683 閱讀 8379

最近在複習的時候發現基礎太薄弱,對於float和double雖然了解所佔位元組數,但不知道他們的取值範圍是多少,這對參加大廠筆試題時是十分不利的

1.八種資料型別的分類如下:

第一類:整型 byte short int long

第二類:浮點型 float double

第三類:邏輯型 boolean(它只有兩個值可取true false)

第四類:字元型 char

2.各種基本資料型別所佔的位元組:

boolean 布林型                 1/8 

byte 位元組型別                    1

char 字元型                       2  乙個字元能儲存乙個中文漢字

short 短整型                     2

int 整數型別                      4

float 浮點型別(單精度)  4

long 長整形                      8

double 雙精度型別(雙精度)  8

3.整型各基本資料型別的取值範圍:

因為1byte = 8byte ,(例如將3byte轉化為二進位制為:0000 0011 ,切記第一位為符號位,即0代表+,1代表-,剩下的七位是資料位)

所以byte取值範圍是:-2^7~2^7-1,即:-128~127(因為0也包括在內,所以在正數範圍是2^7-1)

同理short取值範圍:-2^15~2^15-1

int取值範圍:-2^31~2^31-1(-2147483648~2147483647)約21億

long取值範圍:-2^63~2^63-1

4.float和double取值範圍和精度問題:

float和double的範圍是由指數的位數來決定的。float的指數字有8位,而double的指數字有11位,分布如下:

float:

1bit(符號位)

8bits(指數字)

23bits(尾數字)

double:

1bit(符號位)

11bits(指數字)

52bits(尾數字)

範圍問題:

float的指數範圍為-2^7~2^7-1(即-128~127),而double的指數範圍為-2^10~2^10-1(即-1024~1023),並且指數字是補碼的形式來劃分的。其

中負指數決定了浮點數所能表達的絕對值最小的數;而正指數決定了浮點數所能表達的絕對值最大的數,也即決定了浮點數的取值範圍。

float的範圍為-2^128 ~ +2^128(-3.40e+38 ~ +3.40e+38)

double的範圍為-2^1024 ~ +2^1024(-1.79e+308 ~ +1.79e+308)

精度問題:

float和double的精度是由尾數的位數來決定的。浮點數在記憶體中是按科學計數法來儲存的,其整數部分始終是乙個隱含著的「1」,由於它是不變的

,故不能對精度造成影響

float:2^23 = 8388608,一共七位,這意味著最多能有7位有效數字,但絕對能保證的為6位,也即float的精度為6~7位有效數字;

double:2^52 = 4503599627370496,一共16位,同理,double的精度為15~16位。

double和float的區別

float a 0.1 編譯器報錯 warning c4305 initializing truncation from const double to float 原因 在c c 中 也不知道是不是就在vc 中這樣 上述語句等號右邊0.1,我們以為它是個float,但是編譯器卻把它認為是個doub...

float和double儲存方式

在c c 中float是32位的,double是64位的,兩者在記憶體中的儲存方式和能夠表示的精度均不同,目前c c 編譯器標準都遵照ieee制定的浮點數表示法來進行float,double運算。無論是float還是double,在記憶體中的儲存主要分成三部分,分別是 1 符號位 sign 0代表正...

double和float的誤區!

float是單精度型別,精度是8位有效數字,取值範圍是10的 38次方到10的38次方,float占用4個位元組的儲存空間 double是雙精度型別,精度是17位有效數字,取值範圍是10的 308次方到10的308次方,double占用8個位元組的儲存空間 當你不宣告的時候,預設小數都用double...