Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3.8.5将浮点乘以100时的奇数行为_Python_Pandas_Python 3.8 - Fatal编程技术网

Python3.8.5将浮点乘以100时的奇数行为

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)并得到了预期的结

我目前正在运行Python3.8.5,并使用一些数据创建了一个pandas数据框架。在执行了一些计算之后,我得到了一个浮点值,即
.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

这就解决了问题。非常感谢。