四舍五入到列表中最接近的数字

Round to the nearest number of a list

我正在编写一个程序,returns 一个介于 0 和 0.25 之间的值。我想将该值四舍五入为最接近的预定义值列表。

例如给定一个列表

round_to = [0,0.1,0.15,0.2,0.25]

值 0.004 应四舍五入为 0,值 0.09 -> 0.1,值 0.126 -> 0.15,值 0.22 -> 0.2,依此类推。

有谁知道完成此操作的优雅方法吗?

非常感谢任何见解!

您可以将 min() 与一个关键参数一起使用,该参数根据每个值之间的差值的绝对值比较 round_to 中的条目:

round_to = [0,0.1,0.15,0.2,0.25]
entry = 0.126

min(round_to, key=lambda x: abs(x - entry))

这输出:

0.15