為什麼雙精度有16位有效數字,單精度有7位

2021-03-13 18:52:04 字數 1323 閱讀 9493

1樓:娛樂小八卦啊

浮點數7位有效數字。雙精度數16位有效數字。

浮點數取值範圍:負數取值範圍為 -3.4028235e+38 到 -1.

401298e-45,正數取值範圍為 1.401298e-45 到 3.4028235e+38。

雙精度數取值範圍:負值取值範圍-1.79769313486231570e+308 到 -4.

94065645841246544e-324,正值取值範圍為 4.94065645841246544e-324 到 1.79769313486231570e+308。

浮點數的精度取決於尾數部分。尾數部分的位數越多,能夠表示的有效數字越多。

單精度數的尾數用23位儲存,加上預設的小數點前的1位1,2^(23+1) = 16777216。因為 10^7 < 16777216 < 10^8,所以說單精度浮點數的有效位數是7位。

雙精度的尾數用52位儲存,2^(52+1) = 9007199254740992,10^16 < 9007199254740992 < 10^17,所以雙精度的有效位數是16位。

擴充套件資料

浮點數的標準二進位制數值表示:ieee 754短浮點數和有符號整型一樣,符號位是1,表示負數;符號位是0,表示正數。

指數位部分既可表示正指數又可表示負指數。因此,指數位部分通過實際指數值加上偏差值127的方法計算。例如:

實際指數值為-15,該浮點數的指數位值是112。由於偏差值的作用,實際指數值的有效範圍為-127到128。

有效位表示標準二進位制數值的分數部分。標準二進位制數值大於1小於10幷包含小數部分。小數部分很重要,因此被包含在浮點數格式中。標準值通常都大於1,因此格式中無需包含1。

2樓:匿名使用者

float和double的精度是由尾數的位數來決定的。

浮點數在記憶體中是按科學計數法來儲存的,其整數部分始終是一個隱含著的「1」,

由於它是不變的,故不能對精度造成影響。

float:2^23 = 8388608,一共七位,這意味著最多能有7位有效數字,但絕對能保證的為6位,

也即float的精度為6~7位有效數字;

double:2^52 = 4503599627370496,一共16位,同理,double的精度為15~16位。

3樓:匿名使用者

在計算機記憶體中浮點數表示為1.***x*2^n。其中***x為尾數,在單精度中用23位來儲存。

加上整數位1 這樣就有24位精度。而2^23次方轉化為十進數,小數點後有7位,但並不能取到所有七位數,而能達到六位最大值999999。故單精度有7位有效數字,同理雙精度可推理出16位

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

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

為什麼單精度型的有效數字有的是八位啊?求大佬們解釋,謝謝

當你不指定保留小數的位數時printf永遠保留6位小數。但這6位小數可能是不精確的,因為float只有最多7位有效數字。因為你printf a f f預設小數點後有6位 單精度的浮點數有效數字為什麼是七位?單精度數的尾數用23位儲存,加上預設的小數點前的1位1,2 23 1 16777216。因為 ...

保留兩位有效數字是啥意思什麼是保留兩位有效數字

在數學中,有效數字是指在一個數中,從該數的第一個非零數字起,直到末尾數字止的數字稱為有效數字,如0.618的有效數字有三個,分別是6,1,8。有效數字是指在分析工作中實際能夠測量到的數字。能夠測量到的是包括最後一位估計的,不確定的數字。通過直讀獲得的準確數字叫做可靠數字 把通過估讀得到的那部分數字叫...