C语言程序设计整理(1)将十进制浮点数按要求转换为二进制

目录

【问题描述】

【代码展示】 

【代码解释】


【问题描述】

    将十进制浮点数转换为二进制数输出,要求如下:

    1. 程序全程使用 double 型进行计算

    2. 如输入的实数是负数,则打印负号,整数不打印正号

    3. 若输入的浮点数不含小数部分,则不打印小数点

    4. 若小数部分最多只用输出20位


【输入形式】

    输入只有一个数,为待转换的数
【输出形式】

    输出转换后的二进制数(不要在后面添加换行符)
【样例输入1】

    666.25
【样例输出1】

    1010011010.01


【代码展示】 

//完整的二进制转换
#include<stdio.h>
#include<math.h>
void to_binary(int n);
void to_binarys(double n);    

int main(void)
{
    double number;
    scanf("%lf",&number);
    if (number>=0)
    {
        if (number-(int)number<=1e-6)              
            to_binary((int)number);
        else
        {
            to_binary((int)number);
            printf(".");
            to_binarys(number-(int)number);
        }
    }
    else
    {
        number=fabs(number);
        printf("-");
        if (number-(int)number<=1e-6)              
            to_binary((int)number);
        else
        {
            to_binary((int)number);
            printf(".");
            to_binarys(number-(int)number);
        }
    }
    
    return 0;
}

void to_binary(int n)    //将十进制整数转换为二进制的算法
{
    int r;

    r=n%2;
    if(n>=2)
        to_binary(n/2);
    putchar(r==0?'0':'1');
    return;
}
void to_binarys(double n)  //将十进制小数转换为二进制的算法
{
    double r,m; 
    int k;
    for(k=1;k<=20;k++)
    {
        r=n*2;
        putchar((int)r==0?'0':'1');
        m=r-(int)r;
        n=m;
        if ((n-0)<=1e-6)
            break;
    }
    return;
}

【代码解释】

  本代码主要实现了将十进制的一个double类型的浮点数转换为二进制。

  其中,使用了两个函数,分别实现对于该浮点数整数,小数部分的转换,在主程序中依次调用这两个函数,对输入的浮点数进行处理,得到结果。

  

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值