大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
int postfix = 0;
清涧网站建设公司成都创新互联,清涧网站设计制作,有大型网站制作公司丰富经验。已为清涧千余家提供企业网站建设服务。企业网站搭建\外贸营销网站建设要多少钱,请找那个售后服务好的清涧做网站的公司定做!
char format[10] = {0};
float a = 3.14159265;
scanf("%d", postfix); //读入需要保留的小数位数
sprintf(format, "%%.%df", postfix); //比如输入3,那么format里就是"%.3f",也就是保留三位小数
printf(format, a);
只有浮点型数据,包括float和double有有效位数的说法。
可以用格式化输出函数printf输出数字,同时通过格式化字符串来控制数字有效位数。
printf在输出浮点数时,默认为6位小数,比如定义float f = 1;
调用printf("%f",a);时会输出1.000000。
格式化字符串可以设置成%a.bf的形式,其中:
1 a为输出的数字占据的总宽度(位数),包括整数部分,小数部分和小数点。当实际宽度大于设定宽度时,以实际宽度为准。
2 b为小数位数,也就是输出数字的有效位数。
比如调用printf("5.2f",a);就可以输出
1.00
从而达到控制有效位数的效果。
先把要控制的数字先乘,再取整,再除。
比如:把123.4567保留两位
1:先把123.4567剩100等于12345.67
2:在数字前面加个(int)(12345.67)取整3:取整后数字变成12345
4:最后再把这个数除以100等于123.45
printf("%.2lf",0.123456);只输出小数后2位;
printf("%6.2lf",0.123456);只输出小数后2位;这样可以对齐,保持6位数的位置
#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;
}运行结果:
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中间加“.#”(其中#为小数点位数)
在C的编程中,总会遇到浮点数的处理,有的时候,我们只需要保留2位小数作为输出的结果,这时候,问题来了,怎样才能让cout输出指定的小数点后保留位数呢?
在C语言的编程中,我们可以这样实现它:
[cpp] view plain copy
printf("%.2f", sample);
在C++中,是没有格式符的,我们可以通过使用setprecision()函数来实现这个需求。
想要使用setprecision()函数,必须包含头文件#include iomanip。使用方式如下:
[cpp] view plain copy
cout "a=" setprecision(2) a endl;
这时候,我们会发现,如果a的值为0.20001,输出的结果为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了。当然,如果想要关闭掉补0,只需要对fixed进行取消设置操作。
[cpp] view plain copy
cout.unsetf(ios::fixed);
cout "a=" setprecision(2) a endl; //输出a=0.2
我们的输出结果就又变回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; //输出结果为a=0.20
cout.unsetf(ios::fixed);
cout "a=" setprecision(2) a endl; //输出结果为a=0.2
return 0;
}