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

原创
2015/11/05 17:01
阅读数 159

最近翻了下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)的和的形式


展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部