最近在複習的時候發現基礎太薄弱,對於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...