1樓:匿名使用者
一個單精度浮點數佔用32位。但浮點數與整數不同,其所能描述的數值範圍遠遠大於後者。因為它是採用科學記數形式來表達數值的,即[+/-]0.
******xe[+/-]yyy的形式。也就是說是零點几几幾乘上10的多少次方的形式。這樣,在32位中,1位用來作符號位,指數部分需要6個二進位制位,從而可以表達10的-31次方直到10的正32次方。
這樣只剩下25個二進位制位。2的25次方是一個8位數字的十進位制數,因此最大隻能達到7位有效數字。
c語言中float 單精度實型變數資料長度為32位,但為什麼%f格式輸出時只能輸出6位小數?資料長度是指什麼?
2樓:匿名使用者
單精度的32位中包括符號位,指數位,除了這兩部分,就只有16位了,對於32位作業系統來說,單精度其實沒有整數的精度高
3樓:淺夏微涼耶
資料長度是指在記憶體存貯的位數。32位,在記憶體佔有四個位元組的。
4樓:
%f輸出6位小數的原因是因為float型別的有效數字就是6位
5樓:沒有響應
如果寫出來的就是
00000000 00000000 00000000 00000000
實型變數的float型的有效數字為什麼最多隻有七位?
6樓:匿名使用者
float實型分單雙精度、單精度有四個位元組、共32位、單有效位只有七位!雙精度有8個位元組、共64位、同樣有效位也只有16位、且有些c程式預設小數位只保留6位有效數字!
在c語言中關於float型有一處不明:就是單精度的有效位數是7位,為什麼在下面的例子中這8位都是準確的呢?
7樓:匿名使用者
它是說保證7位準確,並不是說第8位就肯定不準確。
8樓:
type exponent length mantissa length
float 8 bits 23 bits
浮點數的有效位:23bits,合24位
其解析度為:1/(2^24)=0.000,000,059,604644775390625
=0.000,000,06
即浮點數可表示的最小數的單位為0.000000059604644775390625;
其他的數都由0.000000059604644775390625 * 2^x來表示的,
12345678920
12345678900
000000059604644775390625
=12345678848
12345678848=0.000000059604644775390625 * 2^x
具體計算略,原理如此
9樓:匿名使用者
因為計算機儲存浮點數時,是把數看作a*2^b這樣的形式,不是以10為底數,而是以2為底數。即將數轉換成以2為底的「科學計數法」的形式,再由這個形式反轉換成10進位制形式,但資料又有位數限制,所以有些數轉換成二進位制計數法形式後位數超出了限制的位數,那麼轉換回來時得到的數就會與原數有偏差,不同的數這個偏差是不同的,有可能在小數點後第7位,也有可能在第8位,也有可能在其他位數,但能保證第6位之前是正確的。
c語言 關於單精度實數的有效位數
10樓:匿名使用者
一個單精度浮點數的確佔用32位。但浮點數與整數不同,其所能描述的數值範圍遠遠大於後者。因為它是採用科學記數形式來表達數值的,即[+/-]0.
******xe[+/-]yyy的形式。也就是說是零點几几幾乘上10的多少次方的形式。這樣,在32位中,一位用來作符號位,4位用來表示指數部分,剩下的才能用來表達數值的有效部分,通常只能達到7位有效數字的精度。
唉,真是的!剩下的27個二進位制位只能用來表達7位十進位制數!
我又查了一下,指數部分需要6個二進位制位,從而可以表達10的-31次方直到10的正32次方。這樣只剩下25個二進位制位。2的25次方是一個8位數字的十進位制數,因此最大隻能達到7位有效數字。
剛才寫的不準確,對不起!太晚了,腦子有點亂!
11樓:匿名使用者
在32位中,一位用來作符號位,4位用來表示指數部分,剩下的才能用來表達數值的有效部分,通常只能達到7位有效數字的精度
照上面說的,剩下的部分不是32-4-1=27位嗎?
不是還有27位嗎?
12樓:
最大值應該是2的31次方,有一位作為符號數.
為什麼雙精度有16位有效數字,單精度有7位?
13樓:娛樂小八卦啊
浮點數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。
14樓:匿名使用者
float和double的精度是由尾數的位數來決定的。
浮點數在記憶體中是按科學計數法來儲存的,其整數部分始終是一個隱含著的「1」,
由於它是不變的,故不能對精度造成影響。
float:2^23 = 8388608,一共七位,這意味著最多能有7位有效數字,但絕對能保證的為6位,
也即float的精度為6~7位有效數字;
double:2^52 = 4503599627370496,一共16位,同理,double的精度為15~16位。
15樓:匿名使用者
在計算機記憶體中浮點數表示為1.***x*2^n。其中***x為尾數,在單精度中用23位來儲存。
加上整數位1 這樣就有24位精度。而2^23次方轉化為十進數,小數點後有7位,但並不能取到所有七位數,而能達到六位最大值999999。故單精度有7位有效數字,同理雙精度可推理出16位
實型資料的取值範圍和有效數字是什麼意思
16樓:匿名使用者
有效數字的含義是表示數的精度,比如float型能可靠表示6位十進位制數,多於6位以後的數就不都可靠了(誤差過大不可接受,尤其對於後繼計算產生的誤差急速增加);而double型能可靠表示15位十進位制數,15位以後的數也就不可靠了。
取值範圍是能表示的最小值和能表示的最大值之間的一個數域,超出這個數域的值根本就不能表示了,就像char型能表示-128~+127之間的數,小於-128和大於+127的數就不能表示了(表示不了、超出所能表示的範圍,就像用兩位數表示幾百幾千——除非新增運算子號)。
有效數字肯定都是取值範圍之內的數。
17樓:匿名使用者
實型變數 實型變數分為兩類:單精度型和雙精度型.
其型別說明符為float 單精度說明符,double 雙精度說明符。在turbo c中單精度型佔4個位元組(32位)記憶體空間,其數值範圍為3.4e-38~3.
4e+38,只能提供七位有效數字。雙精度型佔8 個位元組(64位)記憶體空間,其數值範圍為1.7e-308~1.
7e+308,可提供16位有效數字。實型變數說明的格式和書寫規則與整型相同。
例如: float x,y; (x,y為單精度實型量)double a,b,c; (a,b,c為雙精度實型量) 實型常數不分單、雙精度,都按雙精度double型處理。
誰能解釋一下VB程式設計中什麼是單精度型什麼是雙精度型啊,E後面
single 資料型別,single 單精度浮點型 變數儲存為 ieee 32 位 4 個位元組 浮點數值的形式,它的範圍在負數的時候是從 3.402823e38 到 1.401298e 45,而在正數的時候是從 1.401298e 45 到 3.402823e38。single 的型別宣告字元為感...
為什麼32位系統只能識別4g記憶體
電腦是數字化的裝置,cpu只能處理0和1,而儲存都是有地址,這個地址就是能識別的最大數字。32位系統,就是2的32次方,4,294,967,296。除開硬體佔用的中斷地址,也就3.5g左右了。每臺計算機不一樣,可識別記憶體大小在大概在。7之間。這是演算法的問題,1g 2 10m 1kb 1024位元...
離合低速一,二擋位頓挫,而高速高擋位為什麼不頓挫
因為一檔和二檔的變速比決定了,這兩個檔位,發動機會有很明顯的制動作用,而高速檔位的傳動比決定了,高速檔位的發動機制動作用非常小,甚至感覺不到。所以,當你換擋操作不夠熟練的時候,會讓車子頓挫,實際上是車速忽然被發動機拉低,就和忽然猛踩一下剎車差不多。開得多了,一點點就會總結出來,怎麼才能進來避免頓挫了...