>>> float(str(0.65000000000000002))
0.65000000000000002
>>> float(str(0.47000000000000003))
0.46999999999999997 ???
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?如何转换0.47000000000000003为字符串并将结果值恢复为浮点数?
我在Windows上使用Python 2.5.4.
众所周知,并非所有十进制数都可以用二进制表示(有限位数).
我想知道,所有(有限)二进制数是否可以使用(有限数量的)十进制数字表示?我怀疑是这样,因为二进制("0.5","0.125"等)中的所有"基元"都可以用有限数量的十进制数字表示.
所以,我的问题如下:"兼容的基础变化"的特征是什么?即," Base 2→Base 10 " 的数学属性是什么,但不适用于" Base 10→Base 2 "?
(正式提出:N和M必须具有哪些属性,以确保所有有限Base-N数都具有相应的有限Base-M数?)