Python3.8.5将浮点乘以100时的奇数行为
我目前正在运行Python3.8.5,并使用一些数据创建了一个pandas数据框架。在执行了一些计算之后,我得到了一个浮点值,即Python3.8.5将浮点乘以100时的奇数行为,python,pandas,python-3.8,Python,Pandas,Python 3.8,我目前正在运行Python3.8.5,并使用一些数据创建了一个pandas数据框架。在执行了一些计算之后,我得到了一个浮点值,即.007。然后我将这个值乘以100得到百分比。但是,我注意到返回的值是0.70000000000001,而不是预期的.7。我没有在其他python环境中进行过测试,但在pycharm和jupyter实验室中进行了尝试。我得到了相同的结果 因此,我重新启动内核并尝试print(.007*100),返回的结果是相同的。我还尝试了print(.006*100)并得到了预期的结
.007
。然后我将这个值乘以100得到百分比。但是,我注意到返回的值是0.70000000000001
,而不是预期的.7
。我没有在其他python环境中进行过测试,但在pycharm和jupyter实验室中进行了尝试。我得到了相同的结果
因此,我重新启动内核并尝试print(.007*100)
,返回的结果是相同的。我还尝试了print(.006*100)
并得到了预期的结果:.6
这是python 3.8.5中的一个bug吗?是否有其他人经历过/可以复制此问题
Python 3.8.5 (default, Sep 4 2020, 02:22:02)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.19.0 -- An enhanced Interactive Python. Type '?' for help.
print(.007*100)
print(.006*100)
print(.008*100)
0.7000000000000001
0.6
0.8
这是python 3.8.5中的一个bug吗
这个问题不是3.8.5版特有的,是由python中的float
s的工作方式引起的。我们对此进行了讨论。您可以使用<代码>十进制、十进制> /代码>以避免此问题,请考虑以下示例
import decimal
print(0.1+0.1+0.1==0.3)
print(decimal.Decimal("0.1")+decimal.Decimal("0.1")+decimal.Decimal("0.1")==decimal.Decimal("0.3"))
输出
False
True
这就解决了问题。非常感谢。