float的數值範圍與小數字精度

2021-06-18 04:51:42 字數 1184 閱讀 3149

float a;

a=1023.00006103515625;//整數部分2^10-1,小數部分2^-14

//a=2047.0001220703125;//整數部分2^11-1,小數部分2^-13

//a=4095.000244140625;//整數部分2^12-1,小數部分2^-12

//a=8191.00048828125;//整數部分2^13-1,小數部分2^-11

//a=16383.0009765625;//整數部分2^14-1,小數部分2^-10

//a=32767.00153125;//整數部分2^15-1,小數部分2^-9

//a=65535.00390625;//整數部分2^16-1,小數部分2^-8

//a=131071.0078125;//整數部分2^17-1,小數部分2^-7

//a=262143.015625;//整數部分2^18-1,小數部分2^-6

//a=524287.03125;//整數部分2^19-1,小數部分2^-5

//a=1046575.0625;//整數部分2^20-1,小數部分2^-4

//a=2097151.125;//整數部分2^21-1,小數部分2^-3

//a=4194303.75;//整數部分2^22-1,小數部分2^-2

//a=-8388607.5;//整數部分2^23-1,小數部分2^-1

a=3.4028234692093846346337460743176e+38;//整數部分2^128

printf("%.16fn",a);//若上面的float整數部分+1,則顯示時將忽略小數部分,將損失小數精度

//32位雙字儲存:首位為符號位s,0為正1為負;後8位為指數e,底數為2;最後23位為尾數m

// address+0 address+1 address+2 address+3

//contents seee eeee emmm mmmm mmmm mmmm mmmm mmmm

//其數值大小即為x=((-1)^s)*m*(2^e)

//因此有小數部分時,float的整數二進位制位與小數二進位制位和為23;

//沒有小數部分時,float的整數範圍可達到2^128即3.4028236692093846346337460743177e+38

計算出的多小數字的數值控制小數字的方法

計算出的多小數字的數值控制小數字的方法 例 如圖 1 直接在計算出的結果中進行處理,用round函式,保留n位,四捨五入 decimal zsl convert.todecimal zj zperg convert.todecimal sj decimal sl1 zsl fsl kgperm de...

C 學習 float與double的範圍和精度

float和double的範圍是由指數的位數來決定的。float的指數字有8位,而double的指數字有11位,分布如下 float 1bit 符號位 8bits 指數字 23bits 尾數字 double 1bit 符號位 11bits 指數字 52bits 尾數字 於是,float的指數範圍為 ...

分數字置(模擬除法 求小數字上的數值)

7 5 分數字置 15 分 輸入在一行中給出3個正整數a,b,c 1 a b 10 5 0 c 9 輸出數字c在分數中第一次出現的位置。小數點後的位置從1開始編號,如果它沒有這樣的位置,輸出 1。1 2 022 3 7 1提示,對於第乙個樣例,0出現在 2 1 十進位制形式的小數點後面第2位。對於第...