对于十进制来说,0.1表达起来很完美。但是对于十六进制来说,十进制的0.1就比较尴尬了:它是个小数,但是需要用a/16^1, b/16^2,c/16^3,...去近似计算。因此,结果看起来会比较怪异。比较接近的是:
十进制0.1 = 十六进制0.1999999999999a
你可以手算验证一下小数部分:
1*1/16 + 9*1/16^2 + 9*1/16^3 + ...
= 0.0625 + 0.03515 + 0.002197 + ...
= 0.099847
已经比较接近了。试试看。
如果是二进制小数,那么是0.8
楼上说的是十进制小数0.1没有等值的十六进制小数
没有与其等值的十六进制小数。
二进制 0.00 0110 0110
十进制0.1
八进制0.06 3146 3146
十六进制 0.19 9999 9999
二进制0.1
十进制0.5
八进制0.4
十六进制0.8
二进制的0.1等于十六进制的0.8。
如果是0.1,化成十六进制是无限循环小数。0.1在十六进制下就是0.1999999999……(9循环),因为后面循环节是9,所以等于0.2?因为是十六进制,所以0.19999999999……≠0.2。0.19999999999……=0.2的说法在十进制下才成立。