/* 程序问题注释开始
-
程序的版权和版本声明部分
-
Copyright © 2020,湖南工程职业技术学院信息工程学院学生
-
All rights reserved.
-
文件名称: 蓝桥杯赛题
-
作 者: 李 斌
-
完成日期: 2020 年 03月 21日
-
版 本 号: 007
-
对任务及求解方法的描述部分
-
问题描述:
给定一个介于0和1之间的实数,(如0.625) ,类型为double,
打印它的二进制表示(0.101,
因为小数点后的二进制分别表示0.5,0.25,0.12…)。
如果该数字无法精确地用32位以内的二进制表示,则打印“ERR
OR” -
程序问题注释结束
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner input=new Scanner(System.in);
//输入一个值
System.out.println("请输入一个浮点数:");
double number=input.nextDouble();
//构建二进制小数
StringBuilder build=new StringBuilder("0.");
while(number>0)
{
//乘2去整
number*=2;
//去整
if(number>=1)
{
build.append("1");
number-=1;
}
//不变
else
{
build.append("0");
}
//长度是否超出范围
if(build.length()>34)
{
//超出输出ERROR、终止
System.out.println("ERROR");
break;
}
}
//未超出输出二进制数
System.out.println("二进制数为:\n"+build.toString());
}
}
运行结果: