float的範圍和有效數字怎麼算出來的

時間 2021-08-30 09:39:57

1樓:匿名使用者

首先說一下:

範圍是3.4e-38 ——3.4e+38,可提供7位有效數字。

上述這兩個量都是近似值,各個編譯器不太一樣的。

下面我就將標準值是怎麼定義的,和你說一下:

這個比較複雜,建議你找一下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位

2樓:匿名使用者

就是2的n次方

原因計算機儲存最小位bit,1bit就是1個「0」或者1個"1"。

你的題目有點錯誤,是-3.4e38---3.4e38,二進位制數首位不表示數值,表示正負。

具體是2的好多次方不重要吧,需要的話用電腦上的計算器算換算下就是

在c語言中,單精度有效數字和有效數位

詳細請檢視iee754 單精度,轉換大概規則是從0到31位 最高位表示正負 第30 23位 這8位表示階碼 後22位表示資料。因此你要把他轉化為ieee754格式才能夠看出來。能表示的最小精度為2的 23次方,結果是0.00000011920928955078125。但實際上做不到的,資料由於階碼的...

c語言中float輸出的結果從左往右有效數字是6位,但是我編寫這個小程式後怎麼就只有3位有效?望高手解答

想要搞清楚這個問題,你需要了解float型別在記憶體中的儲存結構 符號位 指數 尾數 78.88在記憶體中的結構為 01000010 10011101 11000010 10001111 第一位為符號位,0 後面八位為指數位10000101 最後23位為尾數0011101 11000010 1000...

化學 有效數字,分析化學中有效數字的問題

有效數字是有規則的。從左往右起從不為零的數字數起,如有1個有效數字,有4個有效數字,0.340000有6個有效數字,45有2個有效數字。如果要你保留3位,2 4 要寫成0.500注意 保留有效數字不需進約 根椐要求保留,一般來說不要求的題目就保留3位小數 與保留有效數字不同 如變,0.3333333...