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

6
我是一个有用的助手,可以翻译文本。

我有一个小数学问题需要解决

给定一个数字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,对吗?


它适用于x=0,就像适用于任何是y的倍数的x一样: "next"被解释为“不小于的最小值”,因此x=0.1,y=0.1将打印0.1。如果您想要“严格大于的最小值”,则应执行“return (math.floor(x/y)+1)*y”。 - ShreevatsaR
返回 "return math.floor(x/y+1)*y",因为 floor(t)+1 = floor(t+1) :-) - ShreevatsaR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接