圆形Python在输出中浮动到4位有效数字,在不同的数字范围内

时间:2017-02-05 13:28:27

标签: python floating-point rounding precision

我正在寻找一种方法将python(输出中)的数字舍入为4位有效数字。

也就是说,我想要一个具有此行为的函数r4()

r4(1.23456) -> '1.235'
r4(12.3456) -> '12.35'
r4(123.456) -> '123.5'
r4(1234.56) -> '1235.'

在所有这些情况下,我舍入到“4”而不是“5”因为我想要IEEE舍入模式“Round half Even”(舍入到最近的关系到最近的事件整数),所以函数也应该产生:

r4(1.23556) -> '1.236'

我查看了round()并使用了.f格式,这没什么用。我正在考虑将其纳入科学记数法,计算有效数字的数量,然后将其取回,但这看起来很愚蠢。

1 个答案:

答案 0 :(得分:1)

找到正确的方法:

def r4(input_value):
    from decimal import Decimal,ROUND_HALF_EVEN,Context
    ctx = Context(prec=4, rounding=ROUND_HALF_EVEN)
    return str(ctx.create_decimal(input_value))