第1个回答 2009-08-12
二进制转换含小数点部分
十六进制大同小意,把除以二的数改成16就可以了,如果不明白加我百度HI
#include <stdio.h>
void bit(int a);
void bit2(double a);
int main()
{
double a;
int b;
scanf("%lf",&a);
b = (int)a;
printf("%d",b);
if((a-b)>0&&(a-b)<1)
{
bit(b);
bit2(a-b);
}
else
bit(b);
}
void bit(int a)
{
if(a>0)
bit(a/2);
printf("%d",a%2);
}
void bit2(double a)
{
static int c = 0;
if(c==0)
printf(".");
printf("%d",(a*2>1)?(int)(a*2):0);
if(a==0||c<5)
{
++c;
bit2(a*2-(int)(a*2));
}
}