二进制表示小数「建议收藏」

二进制表示小数「建议收藏」二进制表示小数二进制表示小数TableofContents1.题目2.方法3.思路1题目给定一个数将其转换为二进制(均用字符串表示),如果这个数的小数部分不能在32个字符之内来精确地表

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

二进制表示小数

Table of Contents

1 题目

给定一个数将其转换为二进制(均用字符串表示),如果这个数的小数部分不能在 32 个字符之内来精确地表示,则返回 “ERROR”。

2 方法

小数分为整数部分(integer)和小数部分(fraction):

  • 整数部分: 对2取余即可得到个位十位百位…上的二进制值,然后除以2作为新的值,等于0结束。
  • 小数部分: 要乘以2,取其整数部分(0/1),作为十分位,百分位…,然后,取小数部分作为新的值,等于0结束,或者无限循环(本题超过32次结束)。

3 思路

负数没有考虑。

public class Solution {
    /**
     *@param n: Given a decimal number that is passed in as a string
     *@return: A string
     */
    public String binaryRepresentation(String n) {
        // write your code here
        StringBuffer sbInt = new StringBuffer();
        StringBuffer sbFrac = new StringBuffer();
        int nInt;
        double dFrac;
        int sign;

        int index = n.indexOf(".");
        if (index == -1) {
            nInt = Integer.decode(n);
            dFrac = 0.0;
        } else {
            nInt = Integer.parseInt(n.substring(0, index));
            dFrac = Double.parseDouble(n.substring(index));
        }

        while (dFrac != 0.0) {
            if (sbFrac.length() > 32) {
                return "ERROR";
            }
            double dFrac2 = 2 * dFrac;
            int dFrac2_int = (int)dFrac2;
            dFrac = dFrac2 - dFrac2_int;

            sbFrac.append(dFrac2_int);
        }

        if (nInt < 0) {
            sign = -1;
            nInt = -1 * nInt;
        }
        while (nInt != 0) {
            sbInt.append(nInt % 2);
            nInt /= 2;
        }
        if (sbInt.length() == 0) {
            sbInt.append("0");
        } else {
            sbInt.reverse();
        }

        if (index == -1 || sbFrac.length() == 0) {
            return sbInt.toString();
        } else {
            return sbInt.append(".").append(sbFrac).toString();
        }
    }
}

Date: 2016-12-25 23:08

Created: 2016-12-31 周六 10:22

Validate

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168007.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Unity实战项目 ☀️| 教你如何在Unity中通过 代码获取 URL链接网页 的 标题 等各种信息✨

    Unity实战项目 ☀️| 教你如何在Unity中通过 代码获取 URL链接网页 的 标题 等各种信息✨直接放入脚本执行即可,可拿到URL目标网页的所有信息stringsa=””;WebRequestwr=WebRequest.Create(“https://www.baidu.com”);Streams=wr.GetResponse().GetResponseStream();StreamReadersr=newStreamReader(s,Encoding.Default);string

    2022年7月18日
    12
  • 空间回归与地理加权_地理加权显著性

    空间回归与地理加权_地理加权显著性本来这一章准备直接写(照抄)ArcGIS的帮助文档,写地理加权回归工具的使用……,然后就直接结束地理加权回归的,但是近来收到不少同学的邮件,很多都是掉在了当年虾神挖出的大坑里面,比如写了方法,没有列出公式,又比如写了公式木有推导过程(……作为高数战五渣的虾神,推导这种事,他认识我,我不认识他……)所以这次写GWR的时候,尽量少挖点坑,把该写的东西都写完,一者为了以后路过的同学少掉点坑,二者

    2022年10月7日
    0
  • linux objdump命令,Linux objdump命令

    linux objdump命令,Linux objdump命令一、简介objdump命令是用查看目标文件或者可执行的目标文件的构成的gcc工具。二、选项三、实例1)显示文件头信息objdump-ftest2)显示SectionHeader信息objdump-htest3)显示全部Header信息objdump-xtest4)显示全部Header信息,并显示对应的十六进制文件代码objdump-stest5)输出目标文件的符号表objdump…

    2025年6月24日
    2
  • Java初学者常用的开发工具都有哪些?[通俗易懂]

    Java初学者常用的开发工具都有哪些?[通俗易懂]俗话说的好“工欲善其事必先利其器”,要想学好java这门语言,选择一款好用顺手的开发工具是必不可少的。java初学者常用源码编辑工具介绍java源代码本质上其实就是普通的文本文件,所以理论上来说任何可以编辑文本文件的编辑器都可以作为我们的java代码编辑工具。比如:WINDOWS记事本、写字板、word等。但是这些简单工具没有语法的高亮提示、自动完成等功能,这些功能的缺失会大大降低代码的编写效率。学习开发时一般我们不会选用这些简…

    2022年7月7日
    16
  • 请简要描述在定点DSP处理器上实现浮点运算的基本步骤_74ls161分频器

    请简要描述在定点DSP处理器上实现浮点运算的基本步骤_74ls161分频器 http://bbs.elecfans.com/jishu_486119_1_1.html   7.1  定点数和浮点数概念   如果小数点的位置事先已有约定,不再改变,此类数称为“定点数”。相比之下,如果小数点的位置可变,则称为“浮点数”(定点数的本质是小数,整数只是其表现形式)。 7.1.1  定点数 …

    2022年9月7日
    0
  • Zookeeper安装_docker vmware

    Zookeeper安装_docker vmware百度网盘链接提取码:yg12拷贝zoo.cfg更改日志输出路径新建文件夹启动成功

    2022年8月8日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号