关于将小数转成二进制的问题,输入0.1结果不对,求高手指教!
本人写了一个将介于0和1之间的小数转成64位尾数的二进制数字序列,经测试输入0.5,输出10000……
经测试输入0.75,输出110000……
以上数字结果正确
但是输入0.1的时候,结果如图
可以看到当计算完第27位的时候,程序就像停止计算了一样,后面全部输出0了,但是实际上0.1转成二进制数字序列应该是110011001100……无限循环的
请问高手们,为什么会出现这种情况?是我程序有问题还是其他的问题?
代码如下:
#include<stdio.h>
int main()
{
float a;
int i;
scanf("%f",&a);
for(i=1;i<65;i++)
{
a=a*2;
if(a>=1)
{
a=a-1;
printf("1");
}
else
{
printf("0");
}
if(i%8==0)
{
printf(" ");
}
}
printf("\n");
return(0);
}