2011-10-06 29 views

Respuesta

9

no sé de cualquier función de Python para hacerlo, pero usted puede fácilmente el código uno:

import math 

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

La conversión a flotar es necesario en Python 2 para evitar la división entera si ambos argumentos son números enteros . También puede usar from __future__ import division. Esto no es necesario con Python 3.

+0

¿Cómo puede ser tan obvio y no pensé en eso o_O. Gracias. – Vladimiroff

+1

'ceil (212, 10)' devuelve '210' incluso debería devolver' 220'. En python 2.x, la división entera está predeterminada en integeres. Tuve un problema similar (pero no exactamente igual) en mi respuesta y tuve que forzar la división de flotantes usando 1.0. – rplnt

+0

Tienes razón, no lo pensé porque codifico principalmente con python3 ahora. Edité la respuesta para forzar la conversión a flotar. – madjar

0

Lo que puedes hacer es esto.

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

Pero no es infalible.

Cuestiones relacionadas