2008-12-07 65 views
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?

回答

11
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,對不對?

+0

它不適用於`x = 0`。 – jfs 2008-12-07 16:19:00

相關問題