2008-12-07 11 views
6

मेरे पास एक छोटी गणित समस्या है जिसे मैं हल करने की कोशिश कर रहा हूंघूर्णन निकटतम कारक के लिए फ्लोट?

एक संख्या 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 

मुझे लगता है कि अपने पहले उदाहरण उत्पादन, गलत है एक्स के लिए सही जवाब '1.1 है, है ना?

+0

यह 'x = 0' के लिए काम नहीं करता है। – jfs

+0

यह x = 0 के लिए काम करता है जैसे कि यह किसी भी x के लिए काम करता है जो y का एक बहु है: "अगला" का अर्थ "सबसे छोटा छोटा" से नहीं है, इसलिए x = 0.1, y = 0.1 0.1 प्रिंट करेगा। यदि आप "सबसे छोटे से सख्ती से अधिक" चाहते हैं, तो आपको "वापसी (गणित। फ्लोर (x/y) +1) * y" करना चाहिए। – ShreevatsaR

+0

या "वापसी गणित। फ्लोर (एक्स/वाई + 1) * वाई", क्योंकि मंजिल (टी) +1 = मंजिल (टी + 1) :-) – ShreevatsaR

संबंधित मुद्दे