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

nha*_*aus 3 python math rounding

我正在编写一个返回 0 到 0.25 之间的值的程序。我想将此值舍入到最接近的预定义值列表。

例如给定一个列表

round_to = [0,0.1,0.15,0.2,0.25]
Run Code Online (Sandbox Code Playgroud)

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

有谁知道一种优雅的方法来实现这一点?

非常感谢任何见解!

Bro*_*ark 7

您可以使用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))
Run Code Online (Sandbox Code Playgroud)

这输出:

0.15
Run Code Online (Sandbox Code Playgroud)