美文网首页
1.5 二进制表示浮点数

1.5 二进制表示浮点数

作者: Aurochsy | 来源:发表于2019-03-22 14:04 被阅读0次

    Chapter1: 位运算的奇技淫巧

    5. 二进制表示浮点数

    问题

    给定一个介于0和1之间的实数(如0.625),类型为double,打印它的二进制表示(0.101,因为小数点后的二进制分别表示2^(-1), 2^(-2), 2^(-3)...)

    如果该数字无法精确地用32位以内的二进制表示,则打印"ERROR"

    算法

    感觉这题跟位运算关系不大,就是按照用二进制表示浮点数的算法,用字符串拼接的方法进行编程

    思路:将该浮点数 *2 得到一个新的数 num,如果 num > 1 则在0. 后拼接上1, 否则拼接上 0, 循环直至 num==0

    string binaryDouble(double num){
        string s="0.";//#include<string>
        while(num!=0){
            num*=2;
            if(num>=1){
                s+="1";
                num-=1;
            }
            else{
                s+="0";
            }
            if(s.length()==34){
                return "ERROR";
            }
        }
        
        return s;
        
    }
    

    参考资料

    [1] 二进制表示浮点数

    [2] C++字符串

    相关文章

      网友评论

          本文标题:1.5 二进制表示浮点数

          本文链接:https://www.haomeiwen.com/subject/liglvqtx.html