gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 08:45:55 27 4
gpt4 key购买 nike

我想用这些输入/输出设计一个函数 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 方式来做到这一点?

最佳答案

您是否考虑过使用 floorceil 的数学方法?

如果您总是想四舍五入到两位数,那么您可以将要四舍五入的数字预乘以 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

关于python - 将 float 向上/向下舍入到 2 位小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40613590/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com