python3中如何正确四舍五入(round()函数无法做到四舍五入)

借鉴文章

如何正确进行四舍五入

如果要实现我们数学上的四舍五入,那么就需要使用decimal模块。

官方文档链接


这里提到了可以通过指定rounding参数来确定进位方式。如果没有指定rounding参数,那么默认使用上下文提供的进位方式。

现在我们来查看一下默认上下文中的进位方式是什么:

>>> from decimal import getcontext

>>> getcontext().rounding

'ROUND_HALF_EVEN'

ROUND_HALF_EVEN实际上就是奇进偶舍!如果要指定真正的四舍五入,那么我们需要在quantize中指定进位方式为ROUND_HALF_UP

>>> from decimal import Decimal, ROUND_HALF_UP

>>> Decimal('0.375').quantize(Decimal('0.00'), rounding=ROUND_HALF_UP)

Decimal('0.38')

>>> Decimal('0.125').quantize(Decimal('0.00'), rounding=ROUND_HALF_UP)

Decimal('0.13')

你可能感兴趣的:(python3中如何正确四舍五入(round()函数无法做到四舍五入))