python - 如何截断小数类型并保留为小数类型而不四舍五入?

标签 python python-3.x

我需要在不舍入的情况下截断小数类型并保留小数类型,以最高效的处理器方式。

我认为数学选项会返回一个 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/

相关文章:

Python 元编程 : automatically generate member functions

python - 添加 psycopg2 无法识别类型的列

python - 从 Bitmex API json 转换问题读取价格图表

python - 如何使用\u 转义码对 Python 3 字符串进行编码?

python-3.x - 如何在 Python 3.4 而不是 2.7 中安装 requests 模块

python - OS X 上 Matplotlib 图形中的表情符号

python - 递归函数(基本)

python - Pandas/Numpy - 如何获取每列的计数并将其与每列进行比较并写入 csv?

python - 分布式系统: Raise error thrown on server side on client side

Python请求: missing content-length response