【问题标题】:How to round Python Decimal instance如何舍入 Python 十进制实例
【发布时间】:2013-04-05 02:00:51
【问题描述】:

如何在四舍五入到最接近的小数时将 Python Decimal 实例四舍五入到特定位数?

我尝试使用docs 中概述的.quantize(Decimal('.01')) 方法,并在previous answers 中提出建议,但尽管尝试了不同的 ROUND_ 选项,但它似乎无法正确舍入。我也试过设置getcontext().prec,但这似乎只控制整个数字的总位数,而不仅仅是小数。

例如我正在尝试做类似的事情:

assert Decimal('3.605').round(2) == Decimal('3.61')
assert Decimal('29342398479823.605').round(2) == Decimal('29342398479823.61')
assert Decimal('3.604').round(2) == Decimal('3.60')
assert Decimal('3.606').round(2) == Decimal('3.61')

【问题讨论】:

    标签: python rounding


    【解决方案1】:

    我认为你需要使用decimal.ROUND_HALF_UP 选项来获得你想要的quantize

    >>> for x in ('3.605', '29342398479823.605', '3.604', '3.606'):
        print x, repr(Decimal(x).quantize(Decimal('.01'), decimal.ROUND_HALF_UP))
    
    3.605 Decimal('3.61')
    29342398479823.605 Decimal('29342398479823.61')
    3.604 Decimal('3.60')
    3.606 Decimal('3.61')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多