Skip to main content
 首页 » 编程设计

python之将 float 向上/向下舍入到 2 位小数

2025年05月04日25fff_TT

我想用这些输入/输出设计一个函数 f(x : float, up : bool):

# 2 decimals part rounded up (up = True) 
f(142.452, True) = 142.46 
f(142.449, True) = 142.45 
# 2 decimals part rounded down (up = False) 
f(142.452, False) = 142.45 
f(142.449, False) = 142.44 

现在,我知道 Python 的 round 内置函数,但它总是将 142.449 向上舍入,这不是我想要的。

有没有比用 epsilons 做一堆 float 比较(容易出错)更好的 pythonic 方式来做到这一点?

请您参考如下方法:

您是否考虑过使用 floor 和 ceil 的数学方法?

如果您总是想四舍五入到两位数,那么您可以将要四舍五入的数字预乘以 100,然后四舍五入到最接近的整数,然后再除以 100。

from math import floor, ceil 
 
def rounder(num, up=True): 
    digits = 2 
    mul = 10**digits 
    if up: 
        return ceil(num * mul)/mul 
    else: 
        return floor(num*mul)/mul