關於float資料型別的範圍 3 4e38(數字(7digits))為什麼是這個範圍呢?大神來解答

2021-04-18 21:39:01 字數 2087 閱讀 3122

1樓:岔路程式緣

3.4e + / - 38 (7 個數字(7digits))所說明的記數範圍是:絕對值最小從3.4×10^-38到最大3.4×10^38,能夠內精確到7個有容效數字。

如:3.14159×10^25、6×10^-25、-7.899036這樣的數字是能夠準確記錄的。

而像:3.14159×10^55、6×10^-70、-7.

89903636672這樣的數字是不能夠用float型別記錄的:3.14159×10^55太大了超過了記數範圍,6×10^-70又太小了超過了記數範圍,而-7.

89903636672數字的位數太多了。即便讓folat記下來,有的也進行了四捨五入處理過了,有的則是亂碼得不到想要的數字。

c語言中,單精度型資料有效數字約是6~7位,數值範圍是約-3.4e-38——3.4e+38,怎麼得出來的???求解

2樓:重小樓

這個比較複雜,建議你找一下ieee754標準看一下。

這個簡單說一下吧:

在ieee754標準中進行了單精度浮點數(float)和雙精度數浮點數(double)的定義。float有32bit,double有64bit。它們的構成包括符號位、指數位和尾數位。

這些位的構成如下:

float---第31位(佔1bit)---第30-23位(佔8bit)----第22-0位(佔23bit)

double--第63位(佔1bit)---第62-52位(佔11bit)---第51-0位(佔52bit)

取值範圍主要看指數部分:

float的指數部分有8bit(2^8),由於是有符號型,所以得到對應的指數範圍-128~128。

double的指數部分有11bit(2^11),由於是有符號型,所以得到對應的指數範圍-1024~1024。

由於float的指數部分對應的指數範圍為-128~128,所以取值範圍為:

-2^128到2^128,約等於-3.4e38 — +3.4e38

精度(有效數字)主要看尾數位:

float的尾數位是23bit,對應7~8位十進位制數,所以有效數字有的編譯器是7位,也有的是8位

其實這些東西網上都能搜到,遇到不懂的,多在網上找下,希望能幫到你

3樓:匿名使用者

這個是因為浮點數的表示格式有關,你可以參考ieee的關於浮點數的格式的標準,裡面有詳細的敘述。不過很難理解。《writer great code》(第1卷)的第4章也講了關於浮點數的問題,比較好理解。

單精度數值範圍為3.4e-38 ~ 3.4e+38這個數值是怎麼算的?

4樓:痴情鐲

1、3.4乘10的負38次方到3.4乘10的38次方,因為單精度數值佔用4個位元組,就是32位;

2、單精度數是指計算機表達實數近似值的一種方式;

3、單精度數的範圍在負數的時候是從 -3.402823e38 到 -1.401298e-45,而在正數的時候是從 1.401298e-45 到 3.402823e38 。

5樓:匿名使用者

就是3.4乘10的負38次方

到3.4乘10的38次方

因為單精度數值佔用4個位元組,就是32位

第1位表示正負,最後8位表示指數位

這麼換算來的,具體參考

6樓:匿名使用者

我用過遊戲修改器,b(0~255)最大2的8次方減1;wb(0~65535)最大2的16次方減;1dwb(0~4294967295)最大2的32次方減1;xor最大2的64次方減1;float最大2的128次方減一。

c語言中,單精度浮點型只佔32位,但為什麼能表示3.4e-38~3.4e+38的範圍?

7樓:驚嘆

浮點型的儲存方式和整型的儲存方式不同,整型是所有二進位制位都表示那個整數,而浮點型則將二進位制位分成了符號位、整數位、小數位、指數位。由於部分二進位制位被用來儲存指數了,所以其精度就降低了,即有效數字位數變少了,但由於有指數位,所以可以表示很大的數。 具體詳情請參考有關資料。

double的資料型別範圍是多少?c

double 的資料型別取值範圍如下 1 負值取值範圍為 1.79769313486231570e 308 到 4.94065645841246544e 324 2 正值取值範圍為 4.94065645841246544e 324 到 1.79769313486231570e 308。拓展資料 c ...

c語言中資料型別的轉換

include stdio.h main 輸出的資料型別不匹配 給你舉個例子吧 j i 實際j值和i一樣 j i,實際j值比i大一 你還沒明白 i 注意它是在i使用後自動加一printf d i 這是兩句命令,執行完i 後才輸出,i值自然 1 j 它是在使用前加一 printf d j 也是兩句命令...

關於C語言不同資料型別的數混合運算的問題

你的 s 1 n是取整運算吧,1 2的整數部分當然是0了。而且你輸出時浮點型資料,所以s結果是0.00000 不能,會自動轉化,將s 1 n,改為s 1.0 n c語言 不同資料型別間的混合運算 c語言裡 不同資料型別間的混合運算會強制轉換的 如6.0 5 結果必然向float型轉換 比如char ...