C語言中關於“有效數字”的問題,在c語言中,有效數字和有效數位怎麼解釋?

時間 2021-08-13 17:24:49

1樓:

當你輸入2.2e2時a=4.84,而輸入2.

2e-2時a=0.20661157024793388429752066115702...。它們的是float型,放在記憶體中是:

2.2e2=01000011 0,1011100 00000000 00000000,2.2e-2=00111100 1,0100100 00111001 01011000。

這兩串二進位制數的“,”前是符號和階碼,我們不管它,後面是這兩個數的二進位制原碼,按c規則它們是大於1小於2、且不顯示整數1的尾數。顯然,前者是4.84的完全表達,而後者是0.

2066...2066...的無限迴圈小數,不能用一串二進位制精準表達(這裡不作四捨五入,只是簡單地把不能表達的位略去),所以得出的數總比輸入的數“小”。

但“精度”已足夠了,誤差<10^-7。其實十進位制小數也不能完整表達2.2e-2,把0.

20661157024793388429752066115702...無論從**截短,都要比2.2e-2小。

輸出2.199999988079071e-002中的88079071通常是為了補齊c的科學表示法小數點後的位數而由系統隨機新增的——這在教科書“資料型別”章節中有介紹。供參考……

2樓:匿名使用者

計算機存取數是用二進位制**實現的,資料轉換一般都有損失

2.2是十進位制數,用二進位制表示為

2的1次方+2的(-3次方)+2的(-4次方)+2的(-7次方)+2的(-8次方)......

因為資料型別限制了資料二進位制**的位數,所以,必然有一些損失

float是32bit 01**,其中26bit為尾數,6bit為冪指數

2.2乘2的(26-最高次冪-1)次方=2.2乘2的24次方還不是整數,所以必然有損失

當然,也有一些數字是不會有損失的,比如2.375=2的1次方+2的(-2次方)+2的(-3次方)

在c語言中,有效數字和有效數位怎麼解釋?

3樓:匿名使用者

1、在c語言中,一個數的有效數字取決於該數字所屬的型別。

2、舉例如內下:

如果數12.3是int型別,那麼

容12就是該數的有效數字,小數部分無效;

如果數12.3是float型別,那麼12.3就是該數的有效數字。

如果數字超過其型別所能表示的範圍,那麼其就沒有效數字。

4樓:

以下所述bai都指vc6.0環境,其他的du可能有所不同。

單精度7位指

zhi的是整數dao部分加上小數部分的數字。比如版a=100000000.0/3.0;

printf("%10.20f\n",a);//輸出33333334.00000000000000000...(20個0)

a=10.0/3.0;

printf("%10.20f\n",a);//3.3333332537....(小權數部分共20位,但明顯小數部分6位有效數字以後是錯的)

.不算。

在printf的%f預設情況下(%和f間沒有輸出限制)是給小數部分輸出6位數字,精度超出就輸出錯的,沒超出就是精確值

5樓:匿名使用者

#include

using namespace std;

int main()

試一下啦!

c語言中如何輸入確定的有效數字?

6樓:匿名使用者

printf不能控制輸出有數字。想控制得自己寫程式,如下: char ss[20];

sprintf(ss, "%lf", s);

char *p = strchr(ss, '.');

if (p!=null)

這時候ss中就是一個合法的數字了。簡單寫的,沒考慮超過10位的整數,也沒考慮輸出結果有沒有10位。只是超過了10位就截尾。

7樓:匿名使用者

printf("%10f",&r);

8樓:匿名使用者

%與lf之間

c 語言問題?在c語言中的問題?

c 語言是c語言發展起來的,所以繼承了c語言幾乎所有的特點,但c 語言又有自己的個性。c語言是一種程序導向的程式語言,而c 主要是程序導向的,因此c 有類的概念,而c語言就沒有。c 的功能強大,編譯器複雜,適合高階程式的設計和,c語言的編譯器簡易,適合低端程式。邏輯混亂,參考正常的實現吧。c語言的基...

在c語言中,有效數字和有效數位怎麼解釋?

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

關於c語言中指標賦值的問題,關於C語言中指標賦值的問題

計算天下 你這樣想說明你還沒有真正理解記憶體和指標。int a 表示編譯器隨機取出一個空閒的地址分配給a,不妨設為00000000,長度為sizeof int 不同編譯器可能不同。int p 也表示隨機取出一個空閒的地址分配給p,不妨設為000000f0,長度一般為4個位元組,則這四個位元組現在儲存...