求人帮忙,我这个程序是十进制转二进制,为什么小数部分不能处理
#include<stdio.h>#include<math.h>
int main()
{
char a[999];
int i,j=0,k,l=0,m,d[999],e[999];
float b=0,c,n=0,o;
printf("shu ru ba jin zhi shu \n");
gets(a);
for(i=0;i<999;i++)
{
if(a[i]=='.'){k=i-1;l++;}
if(a[i]=='\0'){m=i-1;break;}
}
if(l==1)
{
for(i=k;i>=0;i--)
b=b+(a[i]-48)*pow(10,k-i);
for(i=k+2;i<=m;i++)
{
b=b+(float)(a[i]-48)/pow(10,i-k-1);
}
c=b-(int)b;
for(i=0;i<999&&b!=0;i++)
{
d[i]=(int)b%2;
b=(int)(b/2);
n=n+d[i]*pow(10,i);
}
for(i=0;i<999&&c!=0;i++)
{
e[i]=c*2;
c=c*2-e[i];
n=n+(float)e[i]/pow(10,i+1);
}
}
else
{
for(i=m;i>=0;i--)
b=b+(a[i]-48)*pow(10,m-i);
for(i=0;i<999&&b!=0;i++)
{
d[i]=(int)b%2;
b=(int)(b/2);
n=n+d[i]*pow(10,i);
}
}
printf("%0f\n",n);
return 0;
}
输入9.5 输出是1001.09976