btlord

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

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

public class _06_二进制小数 {

  public static void main(String[] args) {
    double num = 0.625;
    StringBuilder sb = new StringBuilder("0.");
    while (num > 0) {
      //乘2:挪整
      double r = num * 2;
      //判断整数部分
      if (r >= 1) {
        sb.append("1");
        //消掉整数部分
        num = r - 1;
      } else {
        sb.append("0");
        num = r;
      }

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

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

}

要点:

  • 乘2:挪整
2021年2月15日

分类:

技术点:

相关文章:

  • 2022-02-07
  • 2022-03-13
  • 2021-05-21
  • 2021-09-09
猜你喜欢
  • 2021-11-30
  • 2021-05-12
  • 2022-01-04
  • 2022-01-02
  • 2022-02-07
相关资源
相似解决方案