為啥雙精度浮點數數值範圍為17E30817E

2021-03-06 22:43:36 字數 3339 閱讀 7424

1樓:1023我愛你

雙精度型別的數用8個位元組64位二進位制表示,雙精度數大約有16位十進位制有效數字,數值的表示範圍約為±(1.7×10^308…1.7×10^308);

同理浮點型別的數用4個位元組32位二進位制表示。這樣表示的數大約有7位十進位制有效數字,數值的表示範圍約為±(3.4×10^38…3.4×10^38);

長雙精度型別的數用10個位元組80位二進位制表示,大約有19位十進位制有效數字,其數值的表示範圍約為±(1.2×10^4932—1.2×10^4932)

2樓:聽不清啊

雙精度浮點數(double)是計算機使用的一種資料型別,使用 64 位(8位元組) 來儲存一個浮點數。 它可以表示十進位制的15或16位有效數字,其可以表示的數字的絕對值範圍大約是:1.

7x10^-308 ~ 1.7x10^308。ieee754為其定製標準。

1位符號位, 11位階碼, 52位尾數

雙精度二進位制小數,使用64個位元儲存。

1位 11位 52位

s(符號位),編號63 e(階碼位),編號62 ~52 m(小數位), 編號51 ~ 0

0表示正,1表示負 −1022~+1023加上1023 任意

採用ieee754規定的規約數的二進位制表示範圍為(*表示0或1都行):

轉化為十進位制的公式:(-1)^s*2^(e-1023)*1.m。

所以絕對值的最小值:2^(-1023)*2=1.7*10^-308

絕對值的最小值:2^(1023)*2=1.7*10^+308

雙精度浮點數值範圍為1.7e-308~1.7e+308

3樓:匿名使用者

科學記數法,e表示10的n次方

下限:1.7e-308,即1.7的10的-308次方

上限:1.7e+308,即1.7的10的+308次方

c語言中,雙精度(double)型其數值範圍為1.7e-308~1.7e+308,這裡面的e是什麼意思啊?

4樓:匿名使用者

e是科學計數法的標誌。

1.7e-308 是 1.7 乘以 10的負308次方

1.7e+308 是 1.7 乘以 10的308次方

5樓:匿名使用者

e是科學計數法的符號。

1.7e-308意思是1.7乘以10的-308次冪

1.7e+308意思是1.7乘以10的+308次冪

雙精度型佔8 個位元組(64位)記憶體空間,其數值範圍為1.7e-308~1.7e+308,可提供16位有效數字。

6樓:匿名使用者

這個問題經常有人問,光我就回答了幾次。浮點數的機器表達與整數完全不同。在計算機中,任何浮點數都表示為(+/-)0.

dddddddddd x 2^eeee的形式。而對於double型別浮點數,64位(二進位制)分配如下:

1、用1位表示符號

2、用53位表示標準化有效值,即dddddddddd的部分3、用10位表示指數,即eee的部分

這樣可知,第二部分最大可以達到0.999......999(接近於1.

0但小於1.0),第三部分最大可以達到1024,因此整個64位double型別最大可以表示0.999......

999 x 2^1024,大約等於

1.7976931348623158乘以10的308次方。

7樓:匿名使用者

3月21日補充:

階碼為0x3ff + 真實指數

所以最大的只能是0x7ff,但是0x7ff被當作溢位了,所以最大是0x7fe

也就是1023,最小的就是-1023

後面講解中的階碼最大為1024是錯的!

應該是這樣

尾數約等於1,再加上一個預設的1 就是約等於2 ,於是最大的數就是約2*2^1023 = 2^1024 得那個數

下面的程式將說明問題

#include

using namespace std;

union

i;double d;

} num;

void main( )

符號位1位,階碼11位,尾數52位

當然最大數就是

符號位 正數

階碼 11位,最大的是 100 0000 0000 (1024 ,表示的指數範圍是-1023到1024,所以最大的是這個了)

而2^1024 約 1.79e308

尾數是有效數字

上面的最大的為 100 0000 0000是錯的

應該是0x7fe 表示:2的0x3ff次方 (0x7ff表示2的0x400方,但是有特殊含義,所以最大的是2的0x3ff次方)

-----------------------

一般機器規定,若基為2並用補碼錶示尾數,則規格化數的標誌為:「尾數的符號位和數值部分最高位具有不同的**」。

為了最大限度提高精度,尾數採用規格化形式,既1/2≤m<1。採用二進位制表示時,若尾數大於零,則規格化數應該是01***x的形式;若尾數小於零,則規格化數應為10***x的形式。

-----------------------

也是有問題的,那個不是標準的

"為便於軟體的移植,浮點數的表示格式應該有統一標準。2023年ieee(institute of electrical and electronics engineers)提出了ieee754標準。該標準規定基數為2,階碼e用移碼錶示,尾數m用原碼錶示,根據原碼的規格化方法,最高數字位總是1,該標準將這個1預設儲存,使得尾數表示範圍比實際儲存的一位"

所以尾數的真值就是0.????尾數(二進位制的,比如0.1就是十進位制0.5) 再加上 1

所以上面程式中的意思就是

一個趨於1的數(0.ffffffffffff + 1) * 2^1023 約 2^1024

所以最大的是那麼多了.......

而負數則同理

8樓:悠然小調

64位,那麼它能表示的數值範圍便是 2的64次方,假設這個數就是x,但同時需要表示負數,所以把正數中的一半拿來,放到負數中,也就是正負個x/2,我想x/2應該就是你說的1.7e+308。

關於實數 1.7e-308至1.7e308到底表示的具體範圍是多少?

9樓:宸_幼兒園

10樓:匿名使用者

e=2.718281 範圍為:-303.376——1424.192

python雙精度浮點數用什麼表示

單精度浮點數在機內佔4個位元組,用32位二進位制描述。雙精度浮點數在機內佔8個位元組,用64位二進位制描述。對程式設計人員來說,double 和 float 的區別是double精度高,有效數字16位,float精度7位。但double消耗記憶體是float的兩倍,double的運算速度比float...

單精度的浮點數有效數字為什麼是七位

單精度數的尾數用23位儲存,加上預設的小數點前的1位1,2 23 1 16777216。因為 10 7 16777216 10 8,所以說單精度浮點數的有效位數是7位。雙精度的尾數用52位儲存,2 52 1 9007199254740992,因為10 16 9007199254740992 10 1...

浮點數所能表示的數值範圍和精度撒於什麼

浮點數所能表示的數值範圍和精度取決於階碼和尾數。階碼 採用指數的實際值加上固定的偏移值的辦法表示浮點數的指數,好處是可以用長度為 個位元的無符號整數來表示所有的指數取值,這使得兩個浮點數的指數大小的比較更為容易,實際上可以按照字典序比較兩個浮點表示的大小。這種移碼錶示的指數部分,中文稱作階碼。定點數...