这里有两种方法可以完成由输入的数字控制输出位数。
第一种: 一个比较直接的方法,比如我们希望输入1.0/3,并且结果保留c位小数,通常我们要保留几位小数只需在%后面加上.1或.2或.3以实现保留一位或两位或三位小数,但是小数点后不能直接填变量,可以通过如下操作完成
但是通过在.后面加上乘号来控制输入只适用于保留16位及以下的有效位数,当我们想要以这种方法来保留有效位数为16位以上的数字时就会出现下面的情况:
明显可以看出在第十七位有效数字的位置上出现了一个1并且后面的数字为零,后面的有效位数不在有效
对于更高位数的小数保留就得采用另一种方法进行!
第二种:通过自定义函数进行;
代码如下
#include<stdio.h>
void f(int a,int b,int c)
{
for (int i = 1;i<=c+1;i++)
{
if (i == 1)
{
if(c==0) printf("%d",a/b);
else printf("%d.",a/b);}
if (a>=b)
{
a = a-a/b*b;
}
else
{
printf("%d",a*10/b);
a = a*10-a*10/b*b;
}
}
}
int main()
{
int a,b,c;
while(scanf("%d%d%d",&a,&b,&c)!=EOF)
{
if(a==0&&b==0&&c==0) break;
f(a,b,c);
printf("\n");
}
}
扫描二维码关注公众号,回复:
2910422 查看本文章