小数化分数
/*小数化分数,非循环*/
#include
#include
#include
double zdgys(double c,double d)
{double o,p;
o=1;p=1;
while(c/o!=d/p)
{while(c/o>d/p)
o++;
while(c/o
p++;
}
while(c/o==d/p)
return (c/o);
}
main()
{ double m,im,j=1;
int l;
/* clrscr(); */
printf("Input decimal fraction:\n");
scanf("%f",&m);
im=floor(m);
while(m!=im)
{m*=10;
j*=10;
im=floor(m);
}
l=zdgys(m,j);
m=m/l;
j=j/l;
printf("The fenshu is %f,%f",m,j);
}
搜索更多相关的解决方案:
化分 小数
----------------解决方案--------------------------------------------------------
将小数看成是整数,分母就是10的位数次方再除去以上个2(5).对分子,分母同时循环除以2或是5(如果最后一位不是2或5则不用做了.)得出的结果就是要的分数.
举个例子:0.128
128 64 32 16
---- = ---- = ---- = ----
1000 500 250 125
----------------解决方案--------------------------------------------------------
不如让小数不停乘10,直到变成整数,在统计是10乘了几次,在让他们(分子/分母=10^n)分别除以他们的最大公约数。
----------------解决方案--------------------------------------------------------
有什么不同吗?
----------------解决方案--------------------------------------------------------
我的具体明白些!
----------------解决方案--------------------------------------------------------