文档章节

二进制无法精确表示1/10

克温s
 克温s
发布于 2015/11/05 17:01
字数 235
阅读 42
收藏 0

最近翻了下JAVA的基础书,发现一个原来忽略的知识点,现在记录一下:

System.out.println(2-1.1)会是多少?

0.9?

是0.8999999999999999

然而为什么呢?以下是搜索到的比较满意的回答,顺便备注下:

其实跟数位表示法有关,比如十进制的情况下:

123,相当于1*10^2+2*10^1+3*10^0(值*进制^位置,个位0,十位1,百位2)

同理:1/10由二进制表示小数的时候只能够表示能够用1/(2^n)

例如:

0.5能够表示,因为它可以表示成为1/2

0.75也能够表示,因为它可以表示成为1/2+1/(2^2)

0.875也能够表示,因为它可以表示成为1/2+1/(2^2)+1/(2^3)

但是0.1不能够精确表示,因为它补能够表示成为1/(2^n)的和的形式


© 著作权归作者所有

克温s
粉丝 2
博文 52
码字总数 19221
作品 0
东城
项目经理
私信 提问
Double数相加后结果不准确

在我们进行两个double运算时,例如:2..0-1.1 不是想象的输出0.9,而是0.89999999999999999。其主要原因是浮点数值采用二进制系统表示,而在二进制系统中无法精确的表示分数1/10。这就好像十...

嘴角轻扬30
2018/12/14
9
0
如果要求精确的答案,请避免使用float和double

float和double类型的主要设计目的是为了科学计算和工程计算。它们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果...

目翟
2013/11/19
942
3
浮点数加法引发的问题:浮点数的二进制表示

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.8......

大数据之路
2013/08/26
1K
0
代码之谜(五)- 浮点数(谁偷了你的精度?)

****光棍节加长版**** 如果我告诉你,中关村配置最高的电子计算机的计算精度还不如一个便利店卖的手持计算器,你一定会反驳我:「今天写博客之前又忘记吃药了吧」。 你可以用最主流的编程语言...

justjavac
2012/11/13
2.4K
5
精确运算避免使用float和double

在《你可能不知道的Java基础知识(一)》中,我提到使用浮点运算要慎重,感觉说的不够透彻,其实float和double类型主要是为科学和工程计算而设计的。他们执行的是二进制浮点运算,由于二进制...

凯文加内特
2015/11/24
924
0

没有更多内容

加载失败,请刷新页面

加载更多

反编译9.png图片还原

本文链接:https://blog.csdn.net/a1140778530/article/details/10528507 经常反编译apk文件找资源,9.png的文件处理起来很麻烦。 最近使用Ant自动编译打包app时,从别处搜罗来的9.png文件导...

shzwork
6分钟前
1
0
Shell脚本应用 – for、while循环语句

一、for循环语句 在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的对象不一样,其他命令相同。例如:根据通讯录中的姓名列表创建系统账号等情况。 当面对各种...

linux-tao
6分钟前
2
0
RPA风潮下企业财务工作模式的变革

RPA(机器人流程自动化)在财务领域的应用,正给企业财务带来前所未有的改变。 前RPA时代,财务领域面临的痛点 在RPA机器人应用之前,企业财务工作进程的推进,主要通过财务人员人工操作或信...

UiBot
11分钟前
2
0
Hive之命令行修改表注释

最近遇到一个需求,在不重建表的情况下,修改表的注释,hive有没有类似关系型数据库的SQL命令来修改呢,找了下,亲测有效,如下List-1 List-1 hive>use your_schemahvie>ALTER TABLE tabl...

克虏伯
12分钟前
2
0
是什么,它的作用是什么

在HTML文档的首部往往会有这么一句话<!DOCTYPE html>,许多时候我们忽视了它的存在,它实际上是一个声明,告诉浏览器用哪种HTML版本的规范来解读HTML文档。 尽管我们不给出这句声明浏览器照样...

前端老手
17分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部