Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >二进制表示小数「建议收藏」

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

作者头像
全栈程序员站长
发布于 2022-09-20 03:44:04
发布于 2022-09-20 03:44:04
61300
代码可运行
举报
运行总次数:0
代码可运行

二进制表示小数

Table of Contents

1 题目

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

2 方法

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

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

3 思路

负数没有考虑。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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.cn/168007.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
计算机基础(二):轻松理解二进制、八进制、十进制和十六进制
计算机基础(一):ASCll、GB2312、GBK、Unicode、UTF-32、UTF-16、UTF-8深度解析
Java微观世界
2025/07/17
1490
计算机基础(二):轻松理解二进制、八进制、十进制和十六进制
【小Y学算法】⚡️每日LeetCode打卡⚡️——20.二进制求和
本文章是⭐️小Y学算法⭐️的内容,该专栏还有多篇优质内容在等待你观看,现在点击右上角点击这个————????订阅专栏???? 就可以免费观看多篇相关内容的文章啦! ????前言 ????原题样例 ?
呆呆敲代码的小Y
2021/09/03
2870
【小Y学算法】⚡️每日LeetCode打卡⚡️——20.二进制求和
Leetcode 67:Add Binary(二进制求和)
Given two binary strings, return their sum (also a binary string).
爱写bug
2019/08/01
3600
Leetcode No.67 二进制求和
示例 2: 输入: a = "1010", b = "1011" 输出: "10101"
week
2022/01/07
2140
剑指Offer(十一)--二进制中1的个数
首先说一个错误的解法,很多人可能会想到,那就是不断对2取余数。但是这种做法有个致命的缺陷,那就是忽略了负数,负数使用补码表示的时候,是取反之后加一,而且
秦怀杂货店
2022/02/15
2260
剑指Offer(十一)--二进制中1的个数
JAVA入门学习五
Scanner的概述:一个简单的文本扫描器,可以使用正则表达式解析原始类型和字符串,以默认空格作为分割。 Scanner的构造方法原理:
全栈工程师修炼指南
2022/09/28
5150
JAVA入门学习五
190. 颠倒二进制位
请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的 示例 2 中,输入表示有符号整数 -3,输出表示有符号整数 -1073741825。
lucifer210
2019/08/16
5870
剑指Offer-1
---- 做了又忘,忘了又做,怎么刷都是学不会啊啊啊 1 从每行每列都是递增的二维数组中找是否存在某数 public class Solution { public boolean Find(int target, int[][] array) { int rows = array.length; int cols = array[0].length; int i = rows - 1; int
晚上没宵夜
2020/12/08
3480
浮点数的二进制表示
我很惊讶,num和*pFloat在内存中明明是同一个数,为什么浮点数和整数的解读结果会差别这么大?
shengjk1
2019/08/01
9040
将十进制小数转化为二进制小数
大家好,又见面了,我是你们的朋友全栈君。 小数表示原理 你了解小数的表示原理吗? 我的十进制小数换成二进制该如何表示? 比如:0.3 的二进制表示为:0.0100110011001….
全栈程序员站长
2022/11/08
5010
十进制小数分数与二进制的转换
例如将十进制分数11/28转换为二进制数,过程如下: 1、首先将分子分母分别转换成二进制 (11)10=(1011)2 (28)10=(11100)2
全栈程序员站长
2022/11/08
2.5K0
十进制小数分数与二进制的转换
【小家java】Java中二进制与位运算(“^,&,>>,>>>”),使用移位算法写一个流水号生成器(订单号生成器)
二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。
YourBatman
2019/09/03
3.8K0
【小家java】Java中二进制与位运算(“^,&,>>,>>>”),使用移位算法写一个流水号生成器(订单号生成器)
python十进制和二进制的转换 (含浮点数)
 Python中 浮点数之间的十进制和二进制的转换  #-*- coding: utf-8 from decimal import Decimal def bTod(n, pre=4): ''' 把一个带小数的二进制数n转换成十进制 小数点后面保留pre位小数 ''' string_number1 = str(n) #number1 表示二进制数,number2表示十进制数 decimal = 0 #小数部分化成二进制后的值 flag = False
喜欢ctrl的cxk
2022/05/07
1.2K1
浮点数加法引发的问题:浮点数的二进制表示
1、问题: 之前有同学问过这样一个问题: echo|awk '{print 3.99 -1.19 -2.80}' 4.44089e-16 类似的问题还有在 java 或者 javascript 中: 23.53 + 5.88 + 17.64 = 47.05 23.53 + 17.64 + 5.88 = 47.050000000000004 为什么结果不是 0 或者不相等呢? 如果你不能立马回答出原因,那说明你对浮点数计算的基本知识还不了解。 刚好最近  segmentfault.co
用户1177713
2018/02/24
2K0
深入理解计算机系统(2.7)------二进制小数和IEEE浮点标准
该文介绍了IEEE 754浮点数算术标准中的一些重要概念和规定。包括浮点数的表示、浮点数的舍入和浮点运算等。同时,还介绍了在JavaScript中如何对浮点数进行运算的一些注意事项。
IT可乐
2018/01/04
1.2K0
深入理解计算机系统(2.7)------二进制小数和IEEE浮点标准
程序员面试金典 - 面试题 05.02. 二进制数转字符串(浮点型 转 二进制小数,乘2取整)
二进制数转字符串。给定一个介于0和1之间的实数(如0.72),类型为double,打印它的二进制表达式。
Michael阿明
2020/07/13
2.4K0
IEEE二进制浮点数算术标准(IEEE 754)
IEEE二进制浮点数算术标准(IEEE 754)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用。这个标准定义了表示浮点数的格式(包括负零-0)与反常值(denormal number)),一些特殊数值(无穷(Inf)与非数值(NaN)),以及这些数值的“浮点数运算符”;它也指明了四种数值舍入规则和五种例外状况(包括例外发生的时机与处理方式)。
用户7886150
2021/02/12
1.6K0
Java之数组篇
该文是对Java大数相加的一个总结,介绍了Java大数相加的算法和思路,并给出了示例代码。
CN_Simo
2017/12/26
1.5K0
Java之数组篇
二进制那些事
理清字符集和字符编码关系中介绍到计算机内部由集成电路决定了计算机的信息只能用二进制数处理。本期将介绍二进制那些事。 移位运算 移位运算指的是将二进制数值的各数位进行左右移位的运算。左移空出来的低位要进
木可大大
2018/04/24
8070
二进制那些事
二进制相关基础知识
如上代码的运算意义:n的最后8位数被截取下来,存储到了k中,经常用于截取数据部分位计算,这种计算称为“掩码(Mask)运算”。 其中m称为“掩码”,按照1的个数是8个称为8位掩码。
海拥
2021/08/23
4090
推荐阅读
相关推荐
计算机基础(二):轻松理解二进制、八进制、十进制和十六进制
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验