本人是个小白,还请各位不吝赐教。
代码如下
#include<stdio.h>
int main()
{
double a=0.3;
printf("a=%lf\n",a);
long long int b=(long long int)a;
a=a-(double)b;
int c;
long long int m,d;
d=0;
m=1;
int n=0;
while(a!=0)
{
a*=2;
c=(int)a;
d=d*2+c;
m*=2;
a=a-(double)c;
n++;
if(n==63) break;
}
long long int x=d;
long long int y=m;
long long int z=1;
n=1;
while(z!=0){
z=x%y;
x=y;
y=z;
n++;
}
d/=x;
m/=x;
d=d+b*m;
printf("\n%lld / %lld=%lf",d,m,(double)d/(double)m);
}
这段代码能实现部分小数转化为分数,我不需要知道怎么改,我想知道这里面求出分数的逻辑在哪,实在没看明白,感谢各位。