发错了啊不是水贴啊,不知道怎么回事出的问题求大神,一个把2进制转换为十进制的程序 小数部分有问题

#include
int main()
{
double a,b,e=0,d=1;
int c,f=0,g;
scanf("%lf",&a);
c=int(a);
b=a-c;

while(c!=0)
{
    if(c%2==1)
        e=e+d;
    d=d*2;
    c=c/10;
}
d=0.5;
while(b!=0&&f!=8)

{

    b=b*10;

    if(int(b)==1)
    {
        e=e+d;
        b=b-1;
        }
    d=d/2;
    f++;


}
printf("%lf",e);

}
输入111.101出问题7.5,其他都没问题 为什么啊 为什么有的时候int(b)==1无法判断他会一直乘下去

b!=0
不能这么写,浮点数的比较要考虑精度误差,应该写
if (fabs(b) < 0.0000001 && f !=0)