高精度小数

来源:互联网 发布:一朝得道天下知 编辑:程序博客网 时间:2024/05/22 06:17

Description
计算A/B的精确值,设A,B是以一般整数输入,计算结果精确小数后20位(若不足20位,末尾不用补0) 。
Sample Input
4 3
6 5

Sample Output
4/3=1.33333333333333333333
6/5=1.2

思路:
这里主要用到了一个式子: a=(a%b)*10,ans[i]=a/b;
此时模拟的是小数点后的除法运算, 求出来的即为小数位上的数。

#include<cstdio>#include<iostream>#include <cstring>using namespace std;const int maxn=50000;int n,c,k;int f[maxn+1];int main( ){    int a,b,i;    while(cin>>a>>b)    {        printf("%d/%d=",a,b);        cout<<a/b<<".";        int ans[21];        memset(ans,0,sizeof ans);        for(i=0; i<20; i++)            a=(a%b)*10,ans[i]=a/b;        while(i--) if(ans[i]) break;        cout<<ans[0];        for(int j=1; j<=i; j++) cout<<ans[j];        cout<<endl;    }    return 0;}
0 0
原创粉丝点击