在 Python 中正确舍入浮点数的最简单方法是什么?

What is the simplest way to round floats correctly in Python?

正如你们中的许多人已经知道的那样,有时 Python 会将 3.75...舍入到 3.7 而不是 3.8,这当然是一个问题。 (我在 Python 3。)

另一位用户在 Python 中提出了一个非常好的函数作为解决方案,他称之为 round_exact(您可以通过搜索在 Stack Overflow 中找到它),但不幸的是,即使这个函数也不是最佳的我的目的,因为它似乎认为小数点后最后一位的零总是多余的并将其删除。

(我的意思是,如果我想要两位小数,而不是 1.7,我希望 1.695 变成 1.70。)

所以,对于如何处理Python在舍入浮点数方面的不足,我还是想请教大家更多的意见

对于数字显示,您应该打印两位小数而不是一位。这可以通过专门格式化的打印语句来完成。

"{:.2f}".format(7.1) # prints 7.10

如果您担心小数不精确,请查看 decimal 模块。它提供高达 28 位的精度,也可用于可靠地打印出这些数字。

小数模块允许精确控制舍入,它可以保留尾随零:

>>> Decimal('1.695').quantize(Decimal('.01'), rounding=ROUND_HALF_UP)
Decimal('1.70')