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之間

關於for迴圈語句後的分號問題,在C語言中,for語句的後面加分號和不加分號有何不同,該分號有什麼作用?

可愛的小知道 for 表示式1 表示式2 表示式3 語句 執行過程如下 1 先求解表示式1。2 求解表示式2,若其值為真,則執行for語句中指定的內嵌語句,然後執行下面第3 步 若其值為假,則結束迴圈,轉到第5 步。3 求解表示式3。4 轉回上面第2 步繼續執行。5 迴圈結束,執行for語句下面的一...

我有一個C語言問題,在c語言中的問題?

上面的怎麼都亂教人呀!樓主且聽我道來。x 0xffff 這是變數賦初值,用0x做開頭表示16進位制的數,這個你應該知道吧。這是c的基本功哦。d x d表示這個數用十進位制表示,然後x再自減運算,不過已經沒什麼用了。於是輸出了0xffff的十進位制形式,為65535這個其實根本就沒有運算過程的。電腦會自動幫...

關於c語言中回車的問題,關於C語言中回車的問題

湛藍水晶 因為第一個程式是while迴圈完了才printf結果,只有一次輸出。第二個程式是在while迴圈過程中就putchar,所以在輸入過程中會輸出結果。 暴秋穎 while c getchar eof 這裡是死迴圈 eof是?若判斷是輸入一字元則跳出顯示結果 該是 與子如初見 第一個是個死迴圈...