0~1间浮点实数的二进制表示

0~1间浮点实数的二进制表示

➢给定一个介于0和1之间的实数,(如0.625) ,类型为double,打印它的二进制表示(0.101,
因为小数点后的二进制分别表示0.5,0.25.0.125…)。
➢如果该数字无法精确地用32位以内的二进制表示,则打印“ERROR”

public class Main {
    public static void main(String[] args) {
        //0~1间浮点实数的二进制表示
        double a = 0.625;
        StringBuilder sb = new StringBuilder("0.");
        while (a>0) {
            double num = a * 2;
            //判断整数部分
            if (num >= 1) {
                sb.append("1");
                //消除整数部分
                a = num - 1;
            } else {
                sb.append("0");
                a = num;
            }

            if (sb.length() > 34) {
                System.out.println("ERROR");
                return;
            }
        }

        System.out.println(sb.toString());

    }

}

发布了40 篇原创文章 · 获赞 0 · 访问量 763

猜你喜欢

转载自blog.csdn.net/weixin_42463611/article/details/104405154