如何截断十进制类型并保留为十进制类型而不进行舍入?

Emi*_*ily 8 python python-3.x

我需要截断十进制类型而不进行舍入并保留十进制类型,以尽可能高效的处理器方式.

我认为数学选项会返回一个浮点数.

量化选项返回我认为的舍入数字.

Str选项是处理器成本高昂的方式.

是否有一种简单直接的方法可以简单地将十进制类型的数字切除超过指定的十进制长度?

mkr*_*er1 9

quantize方法确实有一个rounding参数,用于控制值的舍入方式.该ROUND_DOWN选项似乎做你想要的:

  • ROUND_DOWN (朝零)
from decimal import Decimal, ROUND_DOWN

def truncate_decimal(d, places):
    """Truncate Decimal d to the given number of places.

    >>> truncate_decimal(Decimal('1.234567'), 4)
    Decimal('1.2345')
    >>> truncate_decimal(Decimal('-0.999'), 1)
    Decimal('-0.9')
    """
    return d.quantize(Decimal(10) ** -places, rounding=ROUND_DOWN)
Run Code Online (Sandbox Code Playgroud)