float為什麼可以表示很大的整數

時間 2021-09-02 02:40:47

1樓:聽不清啊

這個資料已經失真了。我們知道,1!=1    2!=2     3!=6    4!=24    5!=120    6!=720   ……

以後每個數的階乘其末尾個位數肯定是0,所以,1!+2!+...+20! 的個位數肯定是1+2=3。

所以,上面程式計算得出的數肯定是不對的了。這是由於不同的型別所能表示數的範圍和精度所決定的:

long最大能表示到21億多,而實型數的情況如下:

範圍float和double的範圍是由指數的位數來決定的。

float的指數位有8位,而double的指數位有11位,分佈如下:

float:

1bit(符號位) 8bits(指數位) 23bits(尾數位)

double:

1bit(符號位) 11bits(指數位) 52bits(尾數位)

於是,float的指數範圍為-127~+128,而double的指數範圍為-1023~+1024,並且指數位是按補碼的形式來劃分的。

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

float的範圍為-2^128 ~ +2^128,也即-3.40e+38 ~ +3.40e+38;double的範圍為-2^1024 ~ +2^1024,也即-1.

79e+308 ~ +1.79e+308。

2.  精度

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

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

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

2樓:

1、float型:單精度浮點數在機內佔4個位元組,用32位二進位制描述(注意:計算機中1個位元組=8位).

2、浮點數在機內用指數型式表示,分解為:數符,尾數,指數符,指數四部分.

3、可以算出float型變數所表示的數範圍了:2^(-32)到2^32-1,大約是±3.4e38

c語言中float型資料表示的最大數字到底是多少啊?

3樓:仁昌居士

c語言中float型資料表示的最大數字為3.402823e38。

float資料型別用於儲存單精度浮點數。

回具有4個位元組,包括一答個符號位、一個8位二進位制指數和一個23位尾數。由於尾數的高順序位始終為1,因此它不是以數字形式儲存的。此表示形式為float型別,提供了一個在-3.402823e38到3.402823e38之間的範圍。

4樓:匿名使用者

float型別所能表示的最大數字為3.4*10^38,即3.4e38。

float是c語言中的一個資料型別的關鍵字,表示單精內度浮點型(雙精

容度浮點型為double)。

定義格式為:

float a; // a表示一個浮點型的變數c語言規定浮點型在記憶體佔用4個位元組,精度為7位,取值範圍為:3.4*10^-38 ~3.

4*10^38或者-(3.4*10^-38 ~3.4*10^38)

5樓:匿名使用者

我們的老譚的c教材上說float型資料的範圍是-3.4×10的-38次方至3.4×26位尾數中有一個符號位也就是最大的數是+/-(2^25-1)*(+/-2^5-1,

6樓:呆

其實這幾種說法都沒有錯.不過2^104*(2^23 -1 )貌似應該是2^104*(2^24 -1).然後2^128和3.4e+38都是估計值

最好是你自己回看一下ieee754標準.

網上不答好搜的話可以看《深入理解計算機系統》第二版第二章的2.4.2小節,講的很詳細.

另外,指數的範圍是-126~+127.具體原因也是自己去看書.

內容不多,兩三頁紙,但是隻靠我打字太難說明白

7樓:匿名使用者

表示有壓力,靜觀高手賜教

float型和double型變數所能表示的最小整數分別是多少??? 這是為什麼啊??

8樓:愛菲兒

float 佔四個位元組,double佔8個位元組,float能表示的數零到二的三十二次方減一,double能表示的數零到二的六十四次方減一

9樓:匿名使用者

float精確位數為7位,double為15位。

10樓:

float型:單精度浮點數在機內佔4個位元組,用32位二進位制描述(注意:計算機中1個位元組=8位)。

double型:雙精度浮點數在機內佔8個位元組,用64位二進位制描述。

浮點數在機內用指數型式表示,分解為:數符,尾數,指數符,指數四部分。

數符佔1位二進位制,表示數的正負。

指數符佔1位二進位制,表示指數的正負。

尾數表示浮點數有效數字,0.******x,但不存開頭的0和點

指數存指數的有效數字。

指數佔多少位,尾數佔多少位,由計算機系統決定。

可能是數符加尾數佔24位,指數符加指數佔8位 -- float.

數符加尾數佔48位,指數符加指數佔16位 -- double.

知道這些你就可以算出float型變數所表示的數範圍了:2^(-32)到2^32-1,大約是±3.4e38;

double型變數所表示的數範圍了:2^(-64)到2^64-1,大約是±3.4e308;

double型所表示的數範圍很大的呀,你可以算一下看看。

11樓:匿名使用者

這是因為它們所佔的位元組數不同而決定的

為什麼浮點數的表示範圍比整型數大?

12樓:

浮點數的表示範圍比整型數大是因為採用的表示形式不同。

整型數在計算機底層採用補碼的形式表示,除去首位的符號位,剩餘的位數即表示數值的範圍。浮點數在計算機中則是實數由一個整數或定點數(即尾數)乘以某個基數(計算機中通常是2)的整數次冪得到,用以近似表示任意某個實數。

13樓:匿名使用者

1、浮點數和整型數在計算機內的表示方式不一樣,在同樣的4位元組裡,浮點數包括階碼和尾數,階碼錶示指數代表浮點數的範圍,尾數代表浮點數的精度。

2、float的有效位數要小於int型別,int型別32位中有31位表示有效數字,float型別中只有部分位表示有效數字,其餘位表示在此基礎上再擴大的倍數。

3、float是用有效數字位數換得表示範圍的。

14樓:匿名使用者

float的有效位數要小於int型別

int型別32位中有31位表示有效數字。

float型別中只有部分位表示有效數字,其餘位表示在此基礎上再擴大的倍數。

float是用有效數字位數換得表示範圍。

例如float無法區分20位以上的兩個相鄰整數(十進位制)。

為什麼float型表示數的範圍比double型表示的數範圍大

15樓:金色潛鳥

c/c++ 語言copy,float型 和 double 型 表示數的

範圍 定義在編譯器bai的 float.h 中。

#define dbl_max 1.7976931348623158e+308

#define dbl_min 2.2250738585072014e-308

#define flt_max 3.402823466e+38f

#define flt_min 1.175494351e-38f

顯然,du double 型 的 範圍 達 10的 308次方zhi,而 float 型 的 範圍 只有dao 10 的 38 次方。

double 型 的 範圍 遠比 float 型 的 範圍 大。

其實,道理很簡單, double 型 用 8 位元組 表示 數,float 型只有 4 位元組。

表示雨很大的詞語,表示雨很大的四字詞語

八方風雨 巴山夜雨 飽經風雨 暴風疾雨 暴風驟雨畢雨箕風 別風淮雨 撥雨撩雲 撥雲撩雨 餐風沐雨餐風宿雨 慘雨酸風 朝雲暮雨 稱雨道晴 馳風騁雨衝風冒雨 礎泣而雨 礎潤而雨 楚夢雲雨 楚天雲雨楚雨巫雲 楚雲湘雨 春風化雨 春風夏雨 春風雨露春雨如油 粗風暴雨 大雨滂沱 大雨傾盆 大雨如注彈雨槍林 東...

描述聲音大的成語,表示聲音很大的成語

震耳欲聾 響徹雲霄 驚天動地 如雷貫耳 振聾發聵 鑼鼓喧天 聲如洪鐘 人聲鼎沸 穿雲裂石 雷霆萬鈞 響遏行雲 1 人聲鼎沸 鼎 古代煮食器 沸 沸騰。形容人群的聲音吵吵嚷嚷,就象煮開了鍋一樣。2 如雷灌耳 亦作 如雷貫耳 形容聲音大 多指語音 形容人的名聲很大。3 鼓樂喧天 鼓 彈奏。喧天 聲音大而...

c語言程式,請問為什麼我用float時會出現誤差

這個你得知道浮點型資料的儲存格式 我簡單給你說下,具體不懂你再問我 11.2的小數部分0.2轉換為2進位制則是無限迴圈的00110011001100110011.單精度在儲存的時候用23bit來存放這個尾數部分 前面9位元儲存指數和符號 同樣0.6也是無限迴圈的 而列印格式為 f的時候,資料會以8位...