底数和小数位数
问题内容:
我需要给浮点数加上一个特定的小数位数。
所以:
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
参数,但现在看来,功能ceil
和floor
不接受小数位数的和始终与零个小数返回一个数字。
当然,我可以将数字乘以10^ndecimals
,然后应用下限,最后除以10^ndecimals
new_value = np.floor(old_value * 10**ndecimals) / 10**ndecimals
但是我想知道是否有一个内置函数可以执行此操作而不必执行操作。
问题答案:
内置的Python或numpy的ceil / floor版本都不支持精度。
一个提示是重用循环而不是多用+除(应该快得多):
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)