首页 > 解决方案 > Python对数数学奇怪的结果

问题描述

在 Python 中这种意外结果的解释是什么??!;

from math import *
>>>log(1000,10) ## expecting 3.0
2.9999999999999996
>>>1000**(1/3) ## expecting 10.0
9.999999999999998

标签: pythonpython-3.x

解决方案


基本上这些函数的值是使用一些序列计算的。由于默认情况下 python 使用浮动值,因此它非常精确地计算值。你可以看到这个...

自然对数 (ln) 和取幂的有效实现 这就是它给出这些类型结果的原因。您可以使用分数中的分数类将这些值转换为整数。

https://docs.python.org/3.1/library/fractions.html


推荐阅读