#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)