习题2-9,分数化小数

来源:互联网 发布:ldf文件恢复数据库 编辑:程序博客网 时间:2024/05/18 00:42

输入正整数a,b,c,输出a/b的小数小数形式,精确到小数点后c位。a,b<=10^6,c<=100。例如a=1,b=6,c=4时应输出0.1667。

这一题的难点是c的范围(最大能到100),而我们所知的最大数据类型double也才只能精确到17位,所以只有一种选择:自定义高精度运算。
但高精度运算是后面几章的内容,怎么会出现在这里呢?还希望看到的朋友们帮忙回答,是不是我想落了什么简单的方法。
#include <iostream>using namespace std;int main(){    int a,b,c,i,t;    cin>>a>>b>>c;    cout<<a/b<<'.';    for( i = 0 ; i < c-1 ; ++i )    {         a%=b;         a*=10;         cout<<a/b;    }    a%=b;    a*=10;    t=a/b;    a%=b;    a*=10;    if( a/b>5 )//四舍五入     cout<<t+1<<endl;    else    cout<<t<<endl;    system("pause");    return 0;}

需要注意的一点是:不要忘了最后一位的四舍五入。

原创粉丝点击