这些浮动结果的原因是什么?[复制]

What is the reason for these float results? [duplicate]

提问人:55gus 提问时间:9/10/2019 最后编辑:snakecharmerb55gus 更新时间:9/3/2020 访问量:71

问:

对于下面的代码,为什么第一个结果是小十进制数,而第二个结果是 0?我的主要问题是为什么额外的小数位使第二个结果为 0。python 在计算浮点数时小数位有限制吗?

x =5.000000000000001
y =5
print(x-y)
x =5.0000000000000001
y =5
print(x-y)
蟒蛇 python-3.x 浮动精度

评论


答:

0赞 Matthew Gaiser 9/10/2019 #1

由于数据的存储方式,浮点数并不总是精确的。它们需要四舍五入才能在实践中正常工作。

x =5.000000000000001
y =5
print(round(x-y))
x =5.0000000000000001
y =5
print(x-y)

评论

1赞 Eric Postpischil 9/10/2019
对浮点数进行四舍五入并不是使它们“起作用”的正确方法。