1樓:賓秋芹捷戌
以下所述都指環境,其他的可能有所不同。
單精度7位指的是整數部分加上小數部分的數字。比如。
a=;printf("%a);/輸出個0)
a=;printf("%a);/小數部分共20位,但明顯小數部分6位有效數字以後是錯的)
.不算。在printf的%f預設情況下(%和f間沒有輸出限制)是給小數部分輸出6位數字,精度超出就輸出錯的,沒超出就是精確值。
c語言 有效位數怎麼數
c語言如何控制輸出數字的有效位數?
2樓:信必鑫服務平臺
c語言控制輸出數字的有效位數可以使用printf()函式格式化輸出格式。
printf()函式的呼叫格式為: printf("《格式化字串》",參量表》)。
其中格式化字串可以控制輸出數字的有效位數,只要將格式化字串中加入%就可以設定輸出的數字的位數了。x指定資料的寬度,即在輸出時可以輸出的最多數字位數;y指定小數位數,即保留小數點後y位數。
c語言如何控制輸出數字的有效位數?
3樓:風若遠去何人留
只有浮點型資料,包括float和double有有效位數的說法。
可以用格式化輸出函式printf輸出數字,同時通過格式化字串來控制數字有效位數。
printf在輸出浮點數時,預設為6位小數,比如定義float f = 1;
呼叫printf("%f",a);時會輸出。
格式化字串可以設定成%的形式,其中:
1 a為輸出的數字佔據的總寬度(位數),包括整數部分,小數部分和小數點。當實際寬度大於設定寬度時,以實際寬度為準。
2 b為小數位數,也就是輸出數字的有效位數。
比如呼叫printf(""a);就可以輸出。
從而達到控制有效位數的效果。
4樓:創作者
printf(「格式控制字串」,輸出表列)格式控制字串 為 %-0 l/h 格式字元。
% 為格式說明的引導符號。
- 為指定左對起輸出。
0 為 指定空位填0
指定輸出域寬及精度。
l/h 輸出長度的修正。
格式字元 為指定輸出的資料型別。
5樓:匿名使用者
如果是double 型資料,printf("%5lf",a);
float 型資料是 printf("%5f",a);
其中 printf("%a); n為一共多少位,m為小數後多少位。
6樓:網友
5位有效位數。
printf("%5g",a) /a是變數名。
按四捨五入保留。
但保留後最後為0幾位會被去除,比如只會顯示2,其他情況可以滿足。
7樓:匿名使用者
在用printf輸出的時候 使用 例 % 5位,其中兩位小數位,% 左對齊 沒有"-「則是右對齊。。等等 。
c語言資料型別有效數字問題
8樓:歷鵾春盼雁
1、long
int的有效位是32位,double的有效位是15~16位。長整型與double型運算時要一律轉換成double的原因是:double所存的數的範圍,比long
int要大得多。而且,因為計算機儲存方式的原因,整型和浮點型是不能直接運算的。兩個小一點的數運算,不論怎麼轉換,對結果都沒有影響,但是如果是一個比較小的數,和一個很大的數運算,當然是省略小的比較精確。
2雖然兩個數都能用float
儲存,但是他們的結果的有效數字是大於float的儲存範圍,在運算時只允許結果小於7位的有效數參加運算,也就是說,不是每位數都能參加運算。如果換成double每位數都能參加運算,雖然最後的有效位是一樣的,但是精度卻提高了。尤其當結果還是一個比較大的數時。
c語言中有效數字的定義與數學中的定義有區別嗎
9樓:折心灬小軒
你所說的有效數字是指?
如果是資料的值,不管是變數還是常量,他的值都是一個固定的數,這一點和數學中是一樣的,不過儲存他們的量(變數或常量)是基於硬體的(儲存器),而現階段常用的記憶體條,在程式設計的過程中,可以抽象為一個線性陣列,並且大小是有限的,而且量的取值範圍是確定的。
所以除了大小限度以外,和數學中的定義幾乎沒有其餘區別,如果非要再多加一點不同,那就是數學中的數可以一直加,知道加到無限大,但是計算機中的量只能表示一個數的範圍,所以不能到無限大,就是所謂的溢位。
相對於整數,實數(小數)就有的意思了,c語言採用浮點數(計算機系統常用浮點數和定點數來表示實數)來表示實數。
實數在計算機內的儲存和整形有些不同。
整形資料的儲存就是他的二進位制資料的順序組合,實數的儲存是用「科學計數法」來表示的,用階碼,尾碼等表示,比浮點數略微複雜一點。
在實際應用中,整數會發生「截斷」,也叫「截短」或「溢位」,這是整形資料內部處理時發生的。
實數在有的時候會發生「截短」,就是「四捨五入」,指實數在不同資料型別之間轉換時發生「精度丟失」的情況滿意請採納,不滿意請追問。
10樓:匿名使用者
有效數字位數是小數點以後的數字位數,而電腦輸出的數字位數決定於定義變數的模式,並一般採用「四捨五入」的方法。 如 int i; printf("enter a value for i...n");scanf("%d", i); 鍵盤輸入0.
333,儲存到變數i裡的數是0(約掉了) 如果改成: double i; 那就會儲存 在輸出數值的時候可以先設定有效數值位數:
double i; printf("enter a value for i...n");scanf("%d", i); printf("i = 4lf", i); 在輸出的時候在電腦上會輸出「i = 0.
3330」 .在處理過程中不會當做有效數字位數來處理。
c語言資料型別有效數字問題
11樓:匿名使用者
1.這是c語言中的強制型別轉化問題。在有不同型別的量參與運算時,一律先強制型別轉化成一致的型別再運算。
轉化規則是以最高階別的型別為基準。由低向高轉化。型別的級別從低到高排列依次為:
char->int->long int ->float->double
2.因為雙精度的數,其有效位比單精度更多,有效位越多,當然計算的結果越精確。但是有效位越多,資料處理也就越多,因而運算速度會降低。
在c中浮點型常量如果沒有說明,一律看做是double型。有說明的除外,如:,這個就是float型。
c語言中關於「有效數字」的問題
12樓:
當你輸入時a=,而輸入2.
2e-2時a=它們的是float型,放在記憶體中是:
這兩串二進位制數的「,」前是符號和階碼,我們不管它,後面是這兩個數的二進位制原碼,按c規則它們是大於1小於2、且不顯示整數1的尾數。顯然,前者是的完全表達,而後者是0.
2066...2066...的無限迴圈小數,不能用一串二進位制精準表達(這裡不作四捨五入,只是簡單地把不能表達的位略去),所以得出的數總比輸入的數「小」。
但「精度」已足夠了,誤差<10^-7。其實十進位制小數也不能完整表達,把0.
20661157024793388429752066115702...無論從**截短,都要比小。
輸出中的88079071通常是為了補齊c的科學表示法小數點後的位數而由系統隨機新增的——這在教科書「資料型別」章節中有介紹。供參考……
13樓:匿名使用者
計算機存取數是用二進位制**實現的,資料轉換一般都有損失。
是十進位制數,用二進位制表示為。
2的1次方+2的(-3次方)+2的(-4次方)+2的(-7次方)+2的(-8次方)..
因為資料型別限制了資料二進位制**的位數,所以,必然有一些損失。
float是32bit 01**,其中26bit為尾數,6bit為冪指數。
乘2的(26-最高次冪-1)次方=乘2的24次方還不是整數,所以必然有損失。
當然,也有一些數字是不會有損失的,比如的1次方+2的(-2次方)+2的(-3次方)
C語言中關於“有效數字”的問題,在c語言中,有效數字和有效數位怎麼解釋?
當你輸入2.2e2時a 4.84,而輸入2.2e 2時a 0.20661157024793388429752066115702.它們的是float型,放在記憶體中是 2.2e2 01000011 0,1011100 00000000 00000000,2.2e 2 00111100 1,010010...
c語言中怎樣將數字變成字母,c語言中怎樣將數字變成字母。
include include int main 具體什麼數字轉成什麼字元,給你碼錶你看看吧看黃圈的地方,就是輸入98 輸出的字元 b 使用sprintf函式可以將數字按指定格式轉換成字串,與printf函式用法差不多, 解決方案1 加 0 後強制型別轉換 如下程式,輸入數字,轉換成字串輸出 inc...
在C語言中,如果要輸入一串數字,其中每個數字用逗號隔開,且不知道總共輸入了多少數字。要怎樣輸入呢
金色潛鳥 先讀1個整型數。然後迴圈 讀1個字元,如果字元是逗號則讀1個整型數,如果不是逗號,迴圈就結束。如果讀整型數有錯,迴圈也結束。include include main printf ni read for i 0 i return 0 太陽小姐的樹屋 比較麻煩。可以每次malloc int ...