int postfix = 0;
清澗網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),清澗網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為清澗千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的清澗做網(wǎng)站的公司定做!
char format[10] = {0};
float a = 3.14159265;
scanf("%d", postfix); //讀入需要保留的小數(shù)位數(shù)
sprintf(format, "%%.%df", postfix); //比如輸入3,那么format里就是"%.3f",也就是保留三位小數(shù)
printf(format, a);
只有浮點型數(shù)據(jù),包括float和double有有效位數(shù)的說法。
可以用格式化輸出函數(shù)printf輸出數(shù)字,同時通過格式化字符串來控制數(shù)字有效位數(shù)。
printf在輸出浮點數(shù)時,默認為6位小數(shù),比如定義float f = 1;
調(diào)用printf("%f",a);時會輸出1.000000。
格式化字符串可以設(shè)置成%a.bf的形式,其中:
1 a為輸出的數(shù)字占據(jù)的總寬度(位數(shù)),包括整數(shù)部分,小數(shù)部分和小數(shù)點。當(dāng)實際寬度大于設(shè)定寬度時,以實際寬度為準。
2 b為小數(shù)位數(shù),也就是輸出數(shù)字的有效位數(shù)。
比如調(diào)用printf("5.2f",a);就可以輸出
1.00
從而達到控制有效位數(shù)的效果。
先把要控制的數(shù)字先乘,再取整,再除。
比如:把123.4567保留兩位
1:先把123.4567剩100等于12345.67
2:在數(shù)字前面加個(int)(12345.67)取整3:取整后數(shù)字變成12345
4:最后再把這個數(shù)除以100等于123.45
printf("%.2lf",0.123456);只輸出小數(shù)后2位;
printf("%6.2lf",0.123456);只輸出小數(shù)后2位;這樣可以對齊,保持6位數(shù)的位置
#includestdio.h
int main(void){
float i = 12.0;
printf("%f\n", i);
printf("%.1f\n", i);
printf("%.2f\n", i);
printf("%.3f\n", i);
printf("%.4f\n", i);
printf("%.5f\n", i);
printf("%.6f\n", i);
printf("%.7f\n", i);
printf("%.8f\n", i);
printf("%.9f\n", i);
printf("%.10f\n", i);
printf("%.11f\n", i);
printf("%.12f\n", i);
return 0;
}運行結(jié)果:
12.000000
12.0
12.00
12.000
12.0000
12.00000
12.000000
12.0000000
12.00000000
12.000000000
12.0000000000
12.00000000000
12.000000000000
printf("%f\n",
i);在普通輸出控制格式字符的%和f中間加“.#”(其中#為小數(shù)點位數(shù))
在C的編程中,總會遇到浮點數(shù)的處理,有的時候,我們只需要保留2位小數(shù)作為輸出的結(jié)果,這時候,問題來了,怎樣才能讓cout輸出指定的小數(shù)點后保留位數(shù)呢?
在C語言的編程中,我們可以這樣實現(xiàn)它:
[cpp]?view plain?copy
printf("%.2f",?sample);
在C++中,是沒有格式符的,我們可以通過使用setprecision()函數(shù)來實現(xiàn)這個需求。
想要使用setprecision()函數(shù),必須包含頭文件#include iomanip。使用方式如下:
[cpp]?view plain?copy
cout??"a="??setprecision(2)??a?endl;
這時候,我們會發(fā)現(xiàn),如果a的值為0.20001,輸出的結(jié)果為a=0.2,后面第二位的0被省略了。
如果我們想要讓它自動補0,需要在cout之前進行補0的定義。代碼如下:
[cpp]?view plain?copy
cout.setf(ios::fixed);
cout??"a="?fixed?setprecision(2)??a?endl;?//輸出a=0.20
這樣,我們就可以得到0.20了。當(dāng)然,如果想要關(guān)閉掉補0,只需要對fixed進行取消設(shè)置操作。
[cpp]?view plain?copy
cout.unsetf(ios::fixed);
cout??"a="??setprecision(2)??a?endl;?//輸出a=0.2
我們的輸出結(jié)果就又變回a=0.2了。
參考代碼
[cpp]?view plain?copy
#include?iostream
#include?iomanip
using?namespace?std;
int?main()
{
float?a?=?0.20001;
cout.setf(ios::fixed);
cout??"a="?fixed?setprecision(2)??a?endl;?//輸出結(jié)果為a=0.20
cout.unsetf(ios::fixed);
cout??"a="??setprecision(2)??a?endl;?//輸出結(jié)果為a=0.2
return?0;
}