题目描述
给定一个介于00和11之间的实数,(如0.6250.625),类型为double,打印它的二进制表示(如:0.1010.101)
如果该数字无法精确地用32位以内的二进制表示,则打印“ERROR”
输入格式
一个双精度浮点数N
输出格式
该浮点数的二进制表示
测试样例
Sample Input 1
0.625
 
Copy
Sample Output 1
0.101
 
Copy
提示
小数点后的二进制分别表示0.5,0.25.0.125..... 比如:
 二进制 ==> 十进制
 0.1 ==> 0.5
 0.01 ==> 0.25
 0.001 ==> 0.125
 0.11 ==> 0.75
以此类推。
取值范围:
 0≤N≤10≤N≤1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main ()
{
	double n,a;
	int i=2;
	char m[100]={'0','.'};
	
	scanf ("%lf",&n);
	
	while (n)
	{
		
		a=n*2;
		if (a>=1)
		{
		
			m[i]='1';
			n=a-1;
			
		}
		else 
		{
			m[i]='0';
			n=a;
		}
		if (i>34)
		{
			printf ("ERROR");
			return 0;
			
			
		}
		i++;
	}
	printf ("%s",m);
	return 0;
	 
}









