中易网

c语言十进制小数转为二进制

答案:3  悬赏:70  
解决时间 2021-01-15 19:41
  • 提问者网友:酱爆肉
  • 2021-01-15 00:25
c语言十进制小数转为二进制
最佳答案
  • 二级知识专家网友:过活
  • 2021-01-15 01:09
看一下程序:
#include
#include

#define NUM 2
#define ZERO 0.000001
//整数部分的转换
void integer(int n)
{
if(n>0)
{
integer(n/NUM);
printf("%d",n%NUM);
}
}
//小数部分的转换
void decimal(double m)
{
if(m>ZERO)
{
m=m*NUM;
printf("%d",(long)m);
decimal(m-(long)m);
}
}

int main()
{
double f;
long n;

printf("请输入一个10进制的小数:");
scanf("%lf",&f);
if(f<0)
{
printf("-");
f=-f;
}
n=(long)f;//整数部分
printf("转换成%d进制的小数为:",NUM);
integer(n);
printf(".");
decimal(f-n);//小数部分的转换
printf("\n");
system("pause");
return 0;
}
全部回答
  • 1楼网友:渊鱼
  • 2021-01-15 01:47
#include
void trans(int x)
{
int a[30];
int i=0,rem;
do{
rem=x%2;x=x/2;
a[i]=rem;
i++;
}while(x!=0);
while(i>0)
printf("%d",a[--i]);
printf("\n");
}
void main()
{
int d;
printf("请输入一个十进制的正整数:\n");
do scanf("%d",&d);while(d<0);
trans(d);
}
  • 2楼网友:往事埋风中
  • 2021-01-15 01:29
十进制转换成R进制小数部分采用‘乘R取整’的方法 即小数部分连续的乘以R,保留每次相乘的整数部分,知道小数部分为0或达到精确度的要求为止,将得到的整数部分按照得到的顺序排流列即为小数部分
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息