我需要在不舍入的情况下截断小数类型并保留小数类型,以最高效的处理器方式。
我认为数学选项会返回一个 float 。
我相信量化选项会返回一个四舍五入的数字。
Str 选项是处理代价高昂的方式。
是否有一种简单、直接的方法可以将超过指定十进制长度的小数类型的数字简单地删除?
最佳答案
quantize
方法确实有一个 rounding
参数来控制值的舍入方式。 ROUND_DOWN
选项似乎可以满足您的需求:
ROUND_DOWN
(towards zero)
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)
关于python - 如何截断小数类型并保留为小数类型而不四舍五入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41523421/