【蓝桥杯】浮点实数的二进制(Java实现)


/* 程序问题注释开始

  • 程序的版权和版本声明部分

  • 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());
		
	}

}

运行结果:
运行结果

发布了46 篇原创文章 · 获赞 1 · 访问量 811

猜你喜欢

转载自blog.csdn.net/qq_46354133/article/details/105010069
今日推荐