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是?若判斷是輸入一字元則跳出顯示結果 該是 與子如初見 第一個是個死迴圈...