一个将浮点数转换为二进制的程序,输出的二进制只是答案的一部分。求大佬相助!!
查看原帖
一个将浮点数转换为二进制的程序,输出的二进制只是答案的一部分。求大佬相助!!
548117
究极混子俞小c楼主2022/1/11 23:05
```cpp
#include<stdio.h>
#include<math.h>
int main()
{
	int k;
	int a;
	double d,b;
	int i,j;
	long long left;
	int m;
	int temp;
	scanf("%d",&m);
	for(i=1;i<=m;i++)
	{
	
		scanf("%lf%d",&d,&k);
		a=floor(d);
		b=d-a;
		j=0;
		while(a!=0)
		{
			temp=a%2;
			left=pow(10,j)*temp+left;; 
			a/=2;
			j++;
		}
			printf("%.4lf(10)=%lld.",d,left);
		j=0;
		while(b!=0)
		{
			b*=2;
			if(j==k)break;
			
			if(floor(b)==1)
			printf("1");
			else
			printf("0");
			
			b=b-floor(b);
			j++;
		}

		printf("(2)\n");
	}
}


我的输入是

1

7360.2257

100

得到输出

7360.2257(10)=1110011000000.0011100111000111011110011010011010110101(2)

但答案要长得多7360.2257(10)=1110011000000.0011100111000111011110011010011010110101000010110000111100100111101110110010111111101100010101101101(2)

2022/1/11 23:05
加载中...