将浮点数四舍五入到最近的因子?

6 投票
1 回答
2136 浏览
提问于 2025-04-11 20:58

我有一个简单的数学问题想要解决。

给定一个数字 x 和一个分辨率 y,我需要找到下一个符合这个分辨率的数字 x'。

比如说:

x = 1.002     y = 0.1   x'= 1.1

x = 0.348     y = 0.1   x'= 0.4

x = 0.50      y = 1     x'= 1

x = 0.32      y = 0.05     x'= 0.35

有没有什么聪明的方法可以在 Python 中做到这一点?

1 个回答

12
import math

def next_multiple(x, y):
    return math.ceil(x/y)*y

def try_it(x, y):
    print x, y, next_multiple(x, y)

for x, y in [
    (1.002, 0.1),
    (0.348, 0.1),
    (0.50, 1),
    (0.32, 0.05)
    ]:
    try_it(x, y)

产生:

1.002 0.1 1.1
0.348 0.1 0.4
0.5 1 1.0
0.32 0.05 0.35

我觉得你第一个例子的输出是错的,x'的正确答案应该是1.1,对吧?

撰写回答