¿Cómo se redondea un número hacia ARRIBA?

Resuelto bodacydo asked hace 14 años • 31 respuestas

¿Cómo se redondea un número hacia ARRIBA en Python?

Lo intenté round(number)pero redondea el número hacia abajo. Aquí hay un ejemplo:

round(2.3) = 2.0 

y no 3, como me gustaría.

Luego lo intenté, int(number + .5)¡pero volvió a redondear el número hacia abajo! Ejemplo:

int(2.3 + .5) = 2
bodacydo avatar Mar 01 '10 21:03 bodacydo
Aceptado

La función math.ceil (techo) devuelve el número entero más pequeño mayor o igual a x.

Para Python 3:

import math
print(math.ceil(4.2))

Para Python 2:

import math
print(int(math.ceil(4.2)))
Steve Tjoa avatar Mar 01 '2010 14:03 Steve Tjoa

Sé que esta respuesta es para una pregunta de hace un tiempo, pero si no quieres importar matemáticas y solo quieres redondear, esto funciona para mí.

>>> int(21 / 5)
4
>>> int(21 / 5) + (21 % 5 > 0)
5

La primera parte se convierte en 4 y la segunda parte se evalúa como "Verdadero" si queda un resto, que además es Verdadero = 1; Falso = 0. Entonces, si no hay resto, entonces sigue siendo el mismo número entero, pero si hay resto, suma 1.

user3074620 avatar May 11 '2014 07:05 user3074620

Si trabaja con números enteros, una forma de redondear hacia arriba es aprovechar el hecho de que //se redondea hacia abajo: simplemente haga la división del número negativo y luego niegue la respuesta. No se necesita importación, punto flotante ni condicional.

rounded_up = -(-numerator // denominator)

Por ejemplo:

>>> print(-(-101 // 5))
21
David Bau avatar Feb 01 '2016 08:02 David Bau