我正在尝试编写一个函数,该函数将获取错误值列表以及与这些错误相关的参数:
例如,如果我的列表看起来像:
errors = [0.0097, 0.83, 0.05, 0.0045]
params = [0.0240, 7.85, 0.75, 12.5]
应用此类函数后生成的列表如下所示:
errors_r = [0.01, 0.8, 0.05, 0.005]
params_r = [0.02, 7.9, 0.75, 12.500]
首先将错误四舍五入为1位有效数字,然后将参数四舍五入为错误最终产生的任何位数。
以下从这个问题How to round a number to significant figures in Python中获取的函数可以很好地将错误四舍五入为1位有效数字:
from math import log10, floor
def round_to_1(x):
return round(x, -int(floor(log10(x))))
要将params
列表中的值四舍五入到其关联错误中的位数,我可以使用round()函数,并在舍入后将其输入错误中的小数位数,但我不确定如何才能达到这个数字。
答案 0 :(得分:5)
您需要做的就是修改函数以接收第二个数字,让它知道将它舍入到的位置。
def round_to_reference(x, y):
return round(x, -int(floor(log10(y))))
总而言之,你可以这样做:
errors_r = map(round_to_1, errors)
params_r = map(round_to_reference, params, errors_r)
这件事不会做的是用正确数量的尾随零点打印数字。例如,
>>> round_to_reference(12.5, 0.005)
12.5
>>> round_to_reference(12.51234, 0.005)
12.512
这些数字已正确舍入,但您需要执行其他操作才能将其转换为具有正确有效位数的字符串。