2011-10-06 18 views

risposta

9

non so di qualsiasi funzione pitone a farlo, ma si può facilmente codice uno:

import math 

def ceil(x, s): 
    return s * math.ceil(float(x)/s) 

La conversione a galleggiare è necessario pitone 2 per evitare la divisione intera se entrambi gli argomenti sono interi . Puoi anche utilizzare from __future__ import division. Questo non è necessario con python 3.

+0

Come potrebbe essere così ovvio e non ci ho pensato O_O. Grazie. – Vladimiroff

+1

'ceil (212, 10)' restituisce '210' anche se dovrebbe restituire' 220'. In python 2.x, la divisione intera è predefinita su interi. Ho avuto un problema simile (ma non proprio uguale) nella mia risposta e ho dovuto forzare la divisione float usando 1.0. – rplnt

+0

Hai ragione, non ci ho pensato perché ora codifico principalmente con python3. Ho modificato la risposta per forzare la conversione a fluttuare. – madjar

0

Quello che puoi fare è questo.

ceil = lambda x,y: math.ceil(x*(1.0/y))/(1.0/y) 

Ma non è infallibile.