zoukankan      html  css  js  c++  java
  • 题6:利用二进制表示浮点数

    题目描述:

      给定一个介于0~1之间的实数,(如0.625),类型位double ,输出二进制的表示形式0.101   因为小数点后的二进制分别表示0.5,0.25,0.125......,如果该数字无法精准地用32以内二进制表示,则打印error.

    解题方法  乘2挪整法

    方法实现步骤: 

        1.创建一个StringBuilder对象初始化位 “0.”(两个字符),用于后面追加小数位。

         2.创建一个while循环,判断n是否大于0,如果小于或等于0则退出循环

        3.当n大于0的时候,给n乘以2,然后判断是否大于1:

           4.如果大于等于1,说明该二进制位为1,在后面追加1,并且消除整数部分,也就是将n-1,变成小数

        5.如果小于1 ,说明该二进制位为0 ,在后面追加0,并且n保持不变

        6.判断StringBuildre对象的长度是否超过32+(2个字符)——34位,超过则输出error,并且退出循环

        7.打印StringBuilder对象。输出结果

    关键代码:

    public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
            System.out.println("请输入一个double类型的浮点实数:");
            double N = input.nextDouble();
            double n = 0.0;
            // 方法:乘二挪整
            StringBuilder builder = new StringBuilder("0.");
            while (N > 0) {
                // 乘以2
                n = N * 2;
                // 判断是否大于1
                if (n >= 1) {
                    builder.append("1");
                    // 消除整数部分
                    N = n - 1;
                } else {
                    builder.append("0");
                    N = n;
                }
                if (builder.length() > 34) {
                    System.out.println("ERROR");
                    return;
                }
            }
            System.out.println(builder.toString());
    
        }

      

  • 相关阅读:
    Python实例---抽屉后台框架分析
    Python学习---Django的验证码
    Python学习---DjangoForm的总结大全
    思维导图---思维导图网站
    编码学习---代码OJ网站
    multiple definition of XXX情况分析
    Qt 之 pro 配置详解
    萨尔曼可汗 数学视频
    Android sendevent/getevent 用法
    inux 驱动程序开发中输入子系统总共能产生哪些事件类型(EV_KEY,EV_ABS,EV_REL)
  • 原文地址:https://www.cnblogs.com/songchengyu/p/12944697.html
Copyright © 2011-2022 走看看