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