提问者:小点点

Python3如何按一定精度向上(向下)舍入


我需要取一个浮点数。例如4.00011。当数字为时,内置函数< code>round()总是向上舍入

def my_round(x, precision = 0, which = "up"):   
    import math
    x = x * 10 ** precision
    if which == "up":
        x = math.ceil(x)
    elif which == "down":
        x = math.floor(x)
    x = x / (10 ** precision)
    return(x)

< code>my_round(4.00018,4," up")

my_round(4.00018,4,"down")

我找不到这个问题(为什么?)。还有我错过的其他模块或功能吗?如果有一个具有基本(修改)功能的大型库,那就太好了。

编辑:我不谈整数。


共1个答案

匿名用户

查看我在这篇SO帖子中的回答。您应该能够通过将ground替换为来轻松修改它以满足您的需要。

如果有帮助,请告诉我!

编辑我只是感觉到了,所以我想提出一个基于代码的解决方案

import math

def round2precision(val, precision: int = 0, which: str = ''):
    assert precision >= 0
    val *= 10 ** precision
    round_callback = round
    if which.lower() == 'up':
        round_callback = math.ceil
    if which.lower() == 'down':
        round_callback = math.floor
    return '{1:.{0}f}'.format(precision, round_callback(val) / 10 ** precision)


quantity = 0.00725562
print(quantity)
print(round2precision(quantity, 6, 'up'))
print(round2precision(quantity, 6, 'down'))

这产生

0.00725562
0.007256
0.007255