python的decimal方法保留两位小数

def my_round(num, digits):
    dig = '0.'
    for d in range(digits):
        dig += '0'
    return float(decimal.Decimal(str(num)).quantize(decimal.Decimal(dig)))

print(round(3.15, 1))
print(my_round(3.15, 1))
print(round(13.145, 2))
print(my_round(13.145, 2))

输出的是
3.1
3.2
13.14
13.14

因为py3.X的round函数浮点处理有点微调。
所以我自己写了一个decimal方法。
现在处理一位小数是对的,但是两位小数就不对了。
如何处理呢?谢谢。

阅读 2.2k
1 个回答

略作修改:

import decimal


def my_round(num, digits):
    dig = '0.'
    for d in range(digits):
        dig += '0'
    return float(decimal.Decimal(str(num)).quantize(decimal.Decimal(dig), rounding=decimal.ROUND_HALF_UP))


print(round(3.15, 1))
print(my_round(3.15, 1))
print(round(13.145, 2))
print(my_round(13.145, 2))
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题