您的位置:首页 > 编程语言 > C语言/C++

c语言之根据根据输入确定的整数n使得输出也要精确到小数n位

2014-07-10 00:45 567 查看
之前我一直很纠结这个问题,就是比如说输入三个整数a,b,c,输出a/b的小数形式,c为精确的小数位数。这不能用%.4f这样的东西来表示,这样表示的是4位有效数字。曾经查过用%g好像有这个效果,的是美中不足的是用了%g的话会使得后面的0舍弃,我最初是将a/b得到的小数乘以10的c次方,在取整再除以10的c次方去掉尾部的0,的是这样做会使得如果得到的小数不够的话,比如1.0/2.0要是此时c=3,结果只能得到0.5,与所需要的结果还是有差距的。所以这个有的方法有缺陷。

有错误地代码:

#include<stdio.h>

int main()

{

int count = 0;

while (scanf("%d%d%d",&a,&b,&c) != EOF && (a != 0 || b != 0 || c!=0))

{

count++;

if (b == 0)

{

printf("Inf answer\n");

}

else

{

printf("%g\n", (floor((double(a) / double(b))*double(pow(10, c)))) / pow(10, c));

}



}

return 0;

}

后来看到printf有个巧妙的用法:

int a, b, c;

while (scanf("%d%d%d", &a, &b, &c) != EOF && (a != 0 || b != 0 || c != 0))

{

if (b!=0)

printf("%.*lf\n", c, (double)a / b);//printf("%*.*s\n", m, n, ch);

//前边的*定义的是总的宽度,后边的定义的是输出的个数。分别对应外面的参数m和n 。

//这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式。

else

printf("Error Input\n");

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐