Python 3.x Python中的舍入

Python 3.x Python中的舍入,python-3.x,floating-point,rounding,Python 3.x,Floating Point,Rounding,四舍五入(1.4 999)(不带空格)四舍五入为2 但是 四舍五入(1.49999999999)(不带空格)四舍五入为1 我想这与不精确的浮点表示有关,但我无法理解为什么第一个表示被解释为更接近2而不是1 因为解析时1.4 999 999 999正好是1.5,所以它们之间的差异太小,无法以该幅度表示 但是1.49999999999低到足以解析为“小于1.5”,实际上是1.4999999999999988897769753748434595763683319091796875,这显然小于1.5如果

四舍五入(1.4 999)
(不带空格)四舍五入为2 但是
四舍五入(1.49999999999)
(不带空格)四舍五入为1


我想这与不精确的浮点表示有关,但我无法理解为什么第一个表示被解释为更接近2而不是1

因为解析时
1.4 999 999 999
正好是1.5,所以它们之间的差异太小,无法以该幅度表示


但是
1.49999999999
低到足以解析为“小于1.5”,实际上是1.4999999999999988897769753748434595763683319091796875,这显然小于1.5

如果这是一个一般性问题,也许我可以从问题中删除Python位。这是相当普遍的,除了
round
操作的确切语义因语言而异之外:在Python中,
round
被正确舍入;这并不一定适用于所有语言。OTOH,这更多地涉及浮点表示问题,而不是舍入操作本身。