C語言中 float都說是是顯示7位有效數字

2025-07-25 00:45:21 字數 2824 閱讀 7919

1樓:銀河群峰之巔

7位有效數字的意思是,超過7位的就沒有意義了。你這個結果四捨五入到7位,你看看是多少。

你的數字會變是因為, 十進位是有限小數的數,轉到二進位可能是無限小數。就是。

2樓:網友

因為a不是,在電腦裡存的是2進位,轉成2進位會有誤差。

3樓:伏無

是的,在c語言中float是顯示小數點後六位小數,如果你想縮小的話那就在最後的printf(".2f",a);

至於點後面要多少你可以隨便更改。

至於說為什麼數字變小了呢,是因為計算機本來就不擅長對小數的處理,這有乙個精度的問題。

4樓:記住回憶

顯示小數點後的6位有效數字。

5樓:匿名使用者

float a;

a = ;改成這樣就行了,錯誤原因是a是float型別,預設為double型別,強制型別轉換資料會有損失。加上f轉換為double後就可以給a賦值了。

6樓:不書桃文墨

float資料。

機器內是2進位數,1位符號位。

8位指數位。

23位「尾數」位。

共32位。2進位數。

平時講有效數字。

是6~7位。

指10進位。

通常程式輸入的數是10進位,進入機器後要化成2進位,計算完又轉十進位輸出。

10進位到2進位,2進位到10進位。

轉換,有的數化不淨,有的數化得淨。

如同10進位分數化10進位小數,有的化得淨(例如4分之1,變,有的化不淨(例如。

3分之1,變。

10進位到2進位,2進位到10進位。

轉換,化得淨的效數字7位,化不淨的效數字6位,因為最後一位有舍入誤差。

例如:float

x,y;x=;//化不淨。

y=;//化得淨。

printf("x=%.8f

y=%.8",x,y);

輸出。

關於c語言 float 保留七位有效數字問題

7樓:哀碧春別楠

%f輸出格式的確是以6位小數輸出的。

但是計算機儲存小數,則存在有效數字這一說,7位有效數字指的是隻能保證7位的有效數字,如果輸入的有效數字多於7位,則不保證之後的位的數字的準確性。當然,你輸入的數能保證了準確性。

如果輸入的資料多餘七位有效數字,就會出錯。比如,輸出後則會出現小數部分不正確。

關於c語言 float 保留七位有效數字問題

8樓:網友

都有六位,預設的格式。

9樓:臥冬的雜貨鋪

單精度實型的意思就是小數點後面有六位啊,什麼佔一位的。

c語言中float有7到8個有效數字,為什麼呢?各位大神能否回答一下呢?

10樓:臺胤松乃

由於float的指數部分對應的指數範圍為-128~128,所以取值範圍為:

2^128到2^128,約等於。

精度(有效數字)主要看尾數位:

float的尾數位是23bit,對應7~8位十進位數,所以有效數字有的編譯器是7位,也有的是8位。

在c語言中關於float型有一處不明:就是單精度的有效位數是7位,為什麼在下面的例子中這8位都是準確的呢?

11樓:網友

它是說保證7位準確,並不是說第8位就肯定不準確。

12樓:網友

type exponent length mantissa length

float 8 bits 23 bits浮點數的有效位:23bits,合24位。

其解像度為:1/(2^24)=,000,059,604644775390625,000,06

即浮點數可表示的最小數的單位為;

其他的數都由 * 2^x來表示的,12345678920

12345678848= *2^x

具體計算略,原理如此。

13樓:網友

因為計算機儲存浮點數時,是把數看作a*2^b這樣的形式,不是以10為底數,而是以2為底數。即將數轉換成以2為底的「科學計數法」的形式,再由這個形式反轉換成10進位形式,但資料又有位數限制,所以有些數轉換成二進位計數法形式後位數超出了限制的位數,那麼轉換回來時得到的數就會與原數有偏差,不同的數這個偏差是不同的,有可能在小數點後第7位,也有可能在第8位,也有可能在其他位數,但能保證第6位之前是正確的。

c語言中float型變數有效數字是七位,怎麼看乙個數的有效位數,和數學上的有效位數是乙個概念嗎?

14樓:網友

不是,變數內在給的是八位的表示,這種型別有正負,所以第一位表示正負,所以有效數字是七位,無符號型有效數字是八位,還有長整型,他是十五位有效數字。

15樓:網友

浮點型的數是 一定數量的位元組連在一起構成的位:前面幾位為指數,後面幾位為尾數(即是小數)。

因為數的位數有限,所以,數總有一定的精度。

float型,4個位元組 32位表示,如果前面8位表示指數的話,尾數只能用24位表示(包含一位符號位)。24位所能表示的小數的精度是2^(-22)左右,就差不多是十進位的7~8位了。再後面由於截斷誤差,七八位以後的數字已經無意義了。

double型,8位元組,64位,前面11位是階碼,後面53位是尾數(包含一位符號位)。所以double型的精度就高很多了,精度是 2^(-52) 左右。

c語言中double和float它們儲存時分別佔據多大的記憶體空間

c標準規定 float 不少於 4個位元組,double 不少於 8個位元組。具體的你在所在平臺上用這個試試就知道了 sizeof int sizeof double sizeof float double 中文譯為雙精度浮點數,一般稱雙精度數,它在記憶體中佔用8個位元組 位 bit 的空間 flo...

c語言中float和double有什么區別用法

c語言中,float和double都屬於浮點數。區別在於 double所表示的範圍,整數部分範圍大於float,小數部分,精度也高於float。舉個例子 圓周率3.1415926535 這個數字,如果用float來表示,最多隻能精確到小數點後面的6位。而double大約能精確到小數點後面的15位左右...

c語言中什麼是實型數,C語言中什麼是實型數?

c語言中的實型抄資料是指帶有小數襲 的數bai。實型資料分兩類 du單精度和雙精度float和double在內zhi存中dao佔用的位元組 float佔用4個位元組,double佔用8個位元組。整型的變數是沒有小數點的,實型是有小數點的整型你可以理解為整數,5 5就是整型常量。不是實型包含整型,實型...