读书人

python float模块的as_integer_ratio打

发布时间: 2013-10-15 16:47:37 作者: rapoo

python float模块的as_integer_ratio打印的结果疑问


>>> (0.25).as_integer_ratio()
(1, 4)
>>> (0.7).as_integer_ratio()
(3152519739159347, 4503599627370496)
>>>

第二个0.7的结果为什么不是(7,10),而是一个很大的数
[解决办法]
在计算机里数字是用2进制表达的,貌似python的算法是取浮点里若干个byte直接转化成整数作为分母...
[解决办法]
>>> (0.7).as_integer_ratio()
(3152519739159347, 4503599627370496)
>>> (0.69999999999999999998).as_integer_ratio()
(3152519739159347, 4503599627370496)
这就是原因

读书人网 >perl python

热点推荐