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