Python的round函数是如何工作的

Python的round函数是如何工作的,python,python-3.x,rounding,Python,Python 3.x,Rounding,我对Python的round函数有点困惑,我尝试了一些输入,该函数给了我有趣的输出。我正在使用Python3.7.7,有人知道为什么它会这样工作吗 >>> round(2.505, 2) 2.5 >>> round(291.605, 2) 291.61 >>> round(291.705, 2) 291.7 >>> round(291.805, 2) 291.81 >>> round(291.405, 2)

我对Python的round函数有点困惑,我尝试了一些输入,该函数给了我有趣的输出。我正在使用Python3.7.7,有人知道为什么它会这样工作吗

>>> round(2.505, 2)
2.5
>>> round(291.605, 2)
291.61
>>> round(291.705, 2)
291.7
>>> round(291.805, 2)
291.81
>>> round(291.405, 2)
291.4

浮点数表示为二进制分数。以2为基数的分数

Pyhton仅根据机器以二进制分数形式存储的数字的十进制近似值显示十进制分数

大多数十进制分数不能精确地表示为二进制分数。其结果是,一般来说,您输入的十进制浮点数仅与机器中实际存储的二进制浮点数近似

因此,291.705可能存储为291.704999979625799286。。等等从而导致291.70或291.7


要了解更多信息,请访问:

在发布这些类型的问题之前,请参阅官方文档,这可能会有所帮助@ZWang Well在官方文档中说,浮点的圆函数可能令人惊讶,并不是一个真正的解释。然后,它会将您重定向到一个页面,解释浮点的局限性@朱利安联系了一条线索来解释同样的现象。非常有趣的阅读。