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個位元組,則這四個位元組現在儲存...