我需要给一个浮点数加上一个特定的小数。
所以:

2.1235 with 2 decimals --> 2.12
2.1276 with 2 decimals --> 2.12  (round would give 2.13 wich is not what I need)

函数np.round接受一个decimals参数,但函数ceilfloor似乎不接受小数位数,而总是返回一个小数位数为零的数字。
当然,我可以把这个数字乘以10^ndecimals,然后应用floor,最后除以10^ndecimals
new_value = np.floor(old_value * 10**ndecimals) / 10**ndecimals

但我想知道是否有一个内置函数可以在不需要执行操作的情况下完成这项工作。

最佳答案

Python的内置版本和numpy的ceil/floor版本都不支持precision。
但有一个提示是重用round而不是multyplication+division(应该快得多):

def my_ceil(a, precision=0):
    return np.round(a + 0.5 * 10**(-precision), precision)

def my_floor(a, precision=0):
    return np.round(a - 0.5 * 10**(-precision), precision)

10-04 17:30