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

時間 2021-08-30 09:40:11

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語言中,有效數字和有效數位怎麼解釋?

以下所述都指環境,其他的可能有所不同。單精度7位指的是整數部分加上小數部分的數字。比如。a printf a 輸出個0 a printf a 小數部分共20位,但明顯小數部分6位有效數字以後是錯的 不算。在printf的 f預設情況下 和f間沒有輸出限制 是給小數部分輸出6位數字,精度超出就輸出錯的...

有效數字的定義是什麼

有效數字,是指測量中實際可以測量到資料,讀數的規則是 從第一個不是零的數字開始往後數,有幾位數字就是幾位有效數字。舉例 1是一位有效數字,1.0是兩位有效數字,1.00是三位有效數字,1.000是四位有效數字。0.1是一位有效數字,0.01是一位有效數字,0.001是一位有效數字,0.0001是一位...

c 中float和double的區別以及浮點型指的是什麼啊

是這樣的,你程式裡的小數,比如float b 6 這一句.所有已知的小數常量,編譯器編譯的時候,都預設把它處理為double型的.所以最好用double.當然不是必須,用float也行.舉個例,float a 7.3 1.0 3 得到的結果為,將表示式右邊按照double型資料計算得到的結果,再轉化...