c語言有效數字
『壹』 c語言有效數字問題
輸出控制符是不分單精度雙精度的,之所以有%f和%lf,完全是為了書寫規則的完善,沒有實際意義。都是double型的。
%f系統默認輸出6個小數點後的位,小數點前的不管多少都輸出
為什麼可以完整地把12.123456輸出出來,單精度為6~7為有效數字
%g 當指數小於-4或大於等於精度時採用%e或%E的格式,否則採用%f的格式。尾部的0與小數點不列印。
『貳』 C語言中關於「有效數字」的問題
當你輸入2.2e2時a=4.84,而輸入2.2e-2時a=0....。它們的是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....無論從哪裡截短,都要比2.2e-2小。輸出2.199999988079071e-002中的88079071通常是為了補齊C的科學表示法小數點後的位數而由系統隨機添加的——這在教科書「數據類型」章節中有介紹。供參考……
『叄』 C語言中整型數據的有效位數是多少
1、從二進制的角度來看整數的有效位數,要從整數的編碼說起,有符號整數編碼包括原碼、反碼和補碼三種常規編碼方式,原碼表示即最高位為符號位,0表示正數,1表示負數,如果以8位二進制位來表示,符號位要佔1位,所以有效位數7位。 要獲取整型類型在當前編譯環境中所佔的位數,可以使用sizeof運算符。
#include<stdio.h>
intmain()
{
printf("sizeofint:%d ",sizeof(int));
return0;
}
2、如果要計算一個整數中的有效位數,可以不斷的整除10求出來。如下代碼:
#include<stdio.h>
inthow_many_int(ints)
{
inti=0;
while(s!=0)
{s/=10;i++;}
returni;
}
intmain()
{
inttest;
do
{
printf("輸入整數:");
scanf("%d",&test);
printf("有%d位 ",how_many_int(test));
}while(test!=~0);
return0;
}
說明:輸入數值超出int所表示的范圍,編譯器會對輸入數進行取模操作。輸出-1結束循環,退出程序。
『肆』 C語言中如何輸入確定的有效數字
printf不能控制輸出有數字。想控製得自己寫程序,如下:
char
ss[20];
sprintf(ss,
"%lf",
s);
char
*p
=
strchr(ss,
'.');
if
(p!=NULL)
{
if
(p-ss
<
11)
ss[11]=0;
}
這時候ss中就是一個合法的數字了。簡單寫的,沒考慮超過10位的整數,也沒考慮輸出結果有沒有10位。只是超過了10位就截尾。
『伍』 C語言如何控制輸出數字的有效位數
5位有效位數
printf("%.5g",a) //a是變數名
按四捨五入保留
但保留後最後為0幾位會被去除,比如2.0000隻會顯示2,其他情況可以滿足
『陸』 c語言輸出時怎麼保留有效數字
通過printf()函數的參數控制,這是一種方法:
printf("%.3f", 1.4567); //保留小數點後三位
用0.0這種形式去試吧
『柒』 C語言,有效位數的保留
一種:把sum轉換為字元串,從頭掃描,從非0開始計數,記到有效位為止,輸出這一段字元串
還有一種就是應該是printf("%#.#d", n, m)可以設置有效數字,不過我忘記了是c99還是c89的。
『捌』 c語言中怎麼保留一位有效數字
1、在C語言中一個數保留1位小數可以通過精度限定符來完成,精度限定符由一個點號後跟一個整數組成。如果要限定小數點後面一位的類型為0或者5,可以使用先乘取整再除的方法進行操作。
2、常式:
#include<stdio.h>
intmain(){
dobulea=1.23456;
printf("%.1f",((int)a*2)/2.0);//使用精度限定符%.1f,輸出:1.0
return0;
}
『玖』 C語言中什麼是一個數的有效數字
在C語言中,一個數的有效數字取決於該數字所屬的類型。
舉例如下:
如果數12.3是int類型,那麼12就是該數的有效數字,小數部分無效;
如果數12.3是float類型,那麼12.3就是該數的有效數字。
如果數字超過其類型所能表示的范圍,那麼其就沒有效數字。