1、一般情况下,printf可以在格式符中指定小数点后保留几位,例如,输出1/3的结果,结果保留小数点后三位
#include<stdio.h>
int main(void)
{
float a,b;
printf("Please Enter the divisor and dividend:") ;
scanf("%f %f", &a, &b);
printf("The Result is : %.3f\n", (a/b));
return 0;
}
编译运行该程序
2、特殊情况下,如果要求根据用户输入的值来确定结果的精度,则需要对printf进行特殊的处理,代码如下:
#include<stdio.h>
int main(void)
{
float a,b;
int c;
printf("Please Enter the divisor,dividend and precision:") ;
scanf("%f %f %d", &a, &b, &c);
printf("The Result is : %.*f\n", c, (a/b));
return 0;
}
将例1中的[%.3f]更换为[%.*f],在输出时,[*]会被变量c替换,编译运行该程序。
结果一:
这个结果和上例中的结果一致。
结果二:
可以看到,输出结果的精度随着输入参数的改变而改变。
例子2中的printf 机制在处理不同精度的结果时有很大的用途,可以作为参考。
刘汝佳的《算法竞赛入门》的第二章的习题2-5《分数化小数(decimal)》中使用到了该特性,解题时可以参考以上例子。