C語言中浮點數變數範圍是怎麼計算出來的?還是官方定義的?為什

2021-04-19 21:54:56 字數 1513 閱讀 5451

1樓:匿名使用者

這個和儲存的格式有關係,

(先看看浮點數格式

·一個浮點數總共有4個字專節,32位

第一個位元表符屬號 0正數 1負數

後八個位元表階碼,即為指數,這個數在實際的數上面加127最後23個位元表尾數 原碼錶示

)實際上有8位是指數位(-128到127)所以其範圍最大值是2*2^127 (前面的2是因為最後23個位元尾數最大的情況是全1,此時無限接近於2)

六位小數就在於1/2^23最小刻度是6位小數

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

2樓:驚嘆

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

在c語言中float資料數值範圍是多少?

3樓:_葉子妞妞

c語言中,float 為單精度浮點數,佔4位元組,其數值範圍為3.4e-38 ~3.4e+38或者-(3.4e-38 ~3.4e+38)

float的指數位有8位,尾數位有23位,符號位1位。

於是,float的指數範圍為-127~+128,按補碼的形式來劃分。

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

所以,float的範圍為-2^128 ~ +2^128,也即-3.40e+38 ~ +3.40e+38

4樓:最後一隻恐龍

是-3.4*10^38到3.4*10^38

兩個答案說3.4e-38 ~3.4e+38,豈不是負數和0都不能表示了?3.4e-38是大於0的啊。

5樓:

3.4*10的-38次冪 ---3.4*10的38次冪!!

關於float資料型別的範圍:3.4e + / - 38 (7 個數字(7digits))為什麼是這個範圍呢?大神來解答

6樓:岔路程式緣

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語言中浮點數在記憶體中的儲存形式的疑惑

你這個問題非常有意義。雖然我們都知道浮點數的格式定義在ieee 754,我們可以換算出你定義的值。但是你這裡列印的卻不是我們換算出來的值,說明這樣列印的方法有問題。可以做以下試驗證明 比如你定義3個一樣的浮點數,float a,b c a b c 9.0 理論上編碼方式一樣,列印出來就應該一樣 無論...

c語言中怎麼表示變數n次方,C語言中怎麼表示1個變數n次方

用pow函式 pow函式的形式 pow double x,double y 用來求解x的y次方。使用pow函式時,如果變數原先定義為回整型,需要強制答轉換為浮點型。例如 float x,y pow x,y 求x的y次方 再例如 int x float y pow double x,y 求x的y次方 ...

C語言中怎樣定義常量變數,C語言中是如何定義常量的啊

常量的定義用const關鍵字 const 型別名 常量名 值 變數的定義是 型別名 變數名 c語言中是如何定義常量的啊 我們在用c程式設計時有時需要定義不變的變數,即常量,有兩種方法。例如 定義常量pi的兩種方式 1.define pi 3.1415926f 2.const float pi 3.1...