C语言如何把小数转换为分数
ps:小数点后很多位的也需要转换
C语言如何把小数转换为分数
ps:小数点后很多位的也需要转换
有多少位,就乘以多少个10的多少倍,然后10的多少倍作为分母,最后两个整数求最小公约数,再分别除以最大公约数就是最简分数了
比如0.32,乘上100后,就是32/100,计算32和100的最大公约数为4,分别除以4,就是8/25了
#include <stdio.h>
int main()
{
int a,b,c,d,t;
int k[1000],i,j;
j = 1;
while(scanf("%d %d %d",&a,&b,&c)!=EOF){
if(a==0&&b==0&&c==0) break;
else{
t=a/b;
a=a%b;
k[0]=0;
for(i=1;i<=c;i++)
{
k[i]=a*10/b;
a=a*10%b;
}
if(a*10/b>=5)
{
for(i=c;i>=0;i--)
{
k[i]=k[i]+1;
if(k[i]<10) break;
else k[i]=k[i]-10;
}
}
}
t = t+k[0];
printf("Case %d: %d.",j++,t);
for(i=1;i<=c;i++)
printf("%d",k[i]);
printf("\n\n");
}
return 0;
}