1樓:
你的程式沒有錯。
問題是浮點數本來就是不能精確表示的。
比如輸入1.23,那麼在xj=m-temp;這一句執行後,在vc裡用f5除錯的時候,你會發現xj的值不是0.23,而是0.22999999999……。
所以你的程式沒有錯,只是純粹是理論上的。
2樓:左左強強峰峰
# include
# define n 12
int main()
3樓:匿名使用者
用我這個程式
#include
#define size 128
void getnum(char* res,float value)char s[size];
memset(s,0,size);
int len = strlen(res);
memcpy(s,res+i+1,len-i-1);
memcpy(res,s,strlen(s));
len = strlen(res)-1;
for(i=len;i>0;i--)}}
void main(int argc, char *ar**)
4樓:匿名使用者
用字串行不?
main()
*(b+j)='\0';
printf("%s",b);}
c語言中輸出時怎樣控制小數點後的位數,請舉例說明保留1、2、3、4位小數等等,謝謝
5樓:凌亂心扉
舉例說明如下:
1、float f1=3.1415926;
2、float f2=1234.1415926;
3、float f3=124.1;
4、printf("%3.4f",f1);//輸出結果為:_ _ 3.1416(_表示空格)
5、printf("%3.4f",f2);//輸出結果為:1234.1416
6、printf("%3.4f",f3);//輸出結果為:124.1000
printf("%3.4f",f);中的3是控制f的整數部分按3位的固定位寬輸出;4是按四捨五入的準則保留4位小數。
注:如果整數部分不足3位,則在前面補空格,超過3位,則按實際位數輸出;如果小數部分不足4,則在後面補0。
浮點型別
如果儲存比精度更重要,請考慮對浮點變數使用float型別。相反,如果精度是最重要的條件,則使用double型別。
浮點變數可以提升為更大基數的型別(從float型別到double型別)。當您對浮點變數執行算術時,通常會出現提升。此算術始終以與具有最高精度的變數一樣高的精度執行。
例如,請考慮下列型別宣告:
float f_short;double f_long;long double f_longer;f_short=f_short*f_long;
在前面的示例中,變數f_short提升到型別double並且與f_long相乘;然後,結果舍入到型別float,然後賦給f_short。
在以下示例中(使用前面示例中的宣告),將以浮點(32位)精度對變數執行算術;結果隨後將提升到double型別:
f_longer=f_short*f_short;
double f_long;
long double f_longer;
f_short=f_short*f_long;
在前面的示例中,變數f_short提升到型別double並且與f_long相乘;然後,結果舍入到型別float,然後賦給f_short。
在以下示例中(使用前面示例中的宣告),將以浮點(32位)精度對變數執行算術;結果隨後將提升到double型別:
f_longer=f_short*f_short;
6樓:匿名使用者
我們在輸出語句上加如0.就行了,比如printf("%0.2f",a); 就是保留2位.
上**#include
int main()
再上結果圖:
擴充套件資容料:小數在計算機中的儲存:
對於浮點型別的資料採用單精度型別(float)和雙精度型別(double)來儲存,float資料佔用 32bit,double資料佔用 64bit.其實不論是float型別還是double型別,在計算機記憶體中的儲存方式都是遵從ieee的規範的,float 遵從的是ieee r32.24 ,而double 遵從的是r64.
53。無論是單精度還是雙精度,在記憶體儲存中都分為3個部分:
1) 符號位(sign):0代表正,1代表為負;
2) 指數位(exponent):用於儲存科學計數法中的指數資料,並且採用移位儲存;
3) 尾數部分(mantissa):尾數部分
7樓:靠名真tm難起
%nf 即輸出的bai
數字佔dun位 當原數字位數zhi大dao
於n時原樣輸出,原數字位數小於回n時輸出數字左端補上空答格,比如原數字為a=1.23456;n為4時輸出為1.23456,n為9時輸出為(空格空格1.23456)
8樓:陳昇富你好
#include
void main()
以此類推權
你說的n指輸出的資料共佔n列
9樓:黃
n是你需要保留的多少位小數的位數,a為變數。比如:
float a=3.14159;
printf("%3f",a);
輸出的結果為:3.141
10樓:匿名使用者
一。%nf 即輸出的數
自字佔n位 當原數字位數大於n時原樣輸出,原數字位數小於n時輸出數字左端補上空格,比如原數字為a=1.23456;n為4時輸出為1.23456,n為9時輸出為
(空格空格1.23456)
二。%n.mf 即輸出總共佔n位其中有m位小數 如a=1.23456 用%4.2f輸出為1.23如果用
%5,1f輸出為123.4即長度為5小數為1!這裡也有當原數字長度小於n時左端補空格這個規則!
還有就是當n前面有個負號時即%-nf或%-n.mf時就右端補空格!
11樓:手機使用者
地址單元而定
#define uchar unsigned char#define uint unsigned intuchar xdata xram _at_ 0xff00[4];//指定外部儲存地址
uchar data1[4]; //你先把你的四位數每位單獨分離出回來存到這個4成員陣列答
void main(void)}
12樓:匿名使用者
保留1位小數 printf("%.1f",a);
保留2位小數 printf("%.2f",a);
保留3位小數 printf("%.3f",a);...
c語言,將double資料輸出時,如何去掉小數位多餘的0?
13樓:匿名使用者
printf("%g\n", a ); //這樣試一下,是不是你想要的
14樓:匿名使用者
double a = 1.001;
printf("%lf",a);//會輸出1.001000,怎樣才能輸出1.001
通過在%與lf之間加上.d(此處的d為十進位制正整數)來控制輸出小數的位數,以此來控制輸出資料的精度,
比如:%.3lf表示輸出的資料有3位小數
%.5lf表示輸出的資料有5位小數
%lf預設輸出6位小數 ,所以本來a=1.001,結果輸出1.001000
15樓:不能說的_祕密
可以用%2.3lf,點3代表著小數為保留3位,前面的2可以隨便。
16樓:於是我呵呵
printf("%.3lf", a);
c語言中輸出如何保留x位小數,注意x是變數
17樓:風若遠去何人留
要輸出x位小數,可以使用printf中的格式控制。
如果要輸出的是float型別,可以使用f格式。
如果是double型別,可以使用lf格式。
比如,要輸出double型別變數d, 保留5位小數,可以使用語句printf("%.5lf",d);
而x是變數時,可以使用
printf("%.*lf",x,d);
即通過.*匹配x。
18樓:量子
先把要輸出的資料用sprintf轉換成字串,保留足夠多的位數,然後根據x的值,從小數點後擷取相應的位數字串輸出
19樓:獨孤丶敗天
用double型別能夠有小數,輸出printf("%.xlf\n",)其中x是保留的小數位數 就是說加上.x 表示保留小數
20樓:
一。%nf 即輸出的數字佔n位 當原數字位數大於n時原樣輸出,原數字位數小於n時輸出數字左端補上空格,比如原數字為a=1.23456;n為4時輸出為1.
23456,n為9時輸出為
(空格空格1.23456)
二。%n.mf 即輸出總共佔n位其中有m位小數 如a=1.23456 用%4.2f輸出為1.23如果用
%5,1f輸出為123.4即長度為5小數為1!這裡也有當原數字長度小於n時左端補空格這個規則!
還有就是當n前面有個負號時即%-nf或%-n.mf時就右端補空格!
21樓:匿名使用者
#include
void main()
22樓:匿名使用者
int i = 3;
printf("%.*lf\n", i, 1.381937635);
c語言題目 輸入正整數a,b,c,輸出a b的小數形式,精確
你沒有必要那樣做的,直接這樣就可以了。如。c 8 double pp a b if pp 1000000000 10 4 判斷小數點後第9位是否大於4,大於4就要進位 pp 0.00000001 printf 結果是 0.8f pp 輸出結果,自動只輸出到小數點後8位。 include includ...
C語言中如何取整,C語言中取整是怎麼取?
茅玉枝稅子 參與運算量均為整型時,結果也為整型,捨去小數。如果運算量中有一個是實型,則結果為雙精度實型。printf d,d n 10 3,10 3 printf f,f n 10.0 3,10.0 3 c語言有以下幾種取整方法 1 直接賦值給整數變數。如 inti 2.5 或i int 2.5 這...
c語言如何精確小數點後指定位數,c語言如何控制小數位數
只能用陣列或者字串模擬除法運算來完成。否則一經超出最大長度 這個只能間接實現,可以用陣列儲存每一位數值。 風若遠去何人留 可以在輸出時,指定小數點後的有效位數,實現精確到若干位的效果。要精確到小數點後若干位,則資料型別為浮點型,可能為單精度 float 或雙精度 double 在c語言中,使用格式化...