La función del entero más cercano en Python

Aprende a redondear a enteros usando las funciones de la librería matemática de Python.
Por g.s. jackson

Python y el redondeo

La librería matemática de Python ofrece un paquete de métodos útiles para redondear números decimales en números enteros. Puedes redondear un número de la forma tradicional (hasta el número entero menor más cercano en partes de fracción de 0,4 o menos, y hacia el mayor en partes de 0,5 o más) usando el método "round()". El siguiente ejemplo muestra cómo redondear números decimales usando el método "round":

>>>f = 5.455 >>>round(f) 5.0 >>>round(f, 2) //rounds to 2 decimals 5.46


Métodos techo y suelo

Como parte de la librería matemática, los métodos "floor()" y "ceil()" proporcionan una forma única de redondear decimales que puedes considerar útiles en determinados cálculos. El método de suelo redondea al número entero menor más cercana hacia el infinito negativo (independientemente del valor decimal), y el método de techo lo redondea hacia el número entero mayor más cercano al infinito positivo. El siguiente ejemplo muestra cómo funcionan las dos funciones:

>>>import math >>>f = 3.5 >>>g = -3.5 >>>floor(f) 3.0 >>>ceil(3.5) 4.0 >>>floor(g) -4.0 >>>ceil(g) -3.0


Redondeo y enteros

Las operaciones de redondeo ilustradas muestran cómo usar estas funciones, pero también tienen efectos secundarios: en las versiones de Python anteriores a la 3.0, los decimales redondeados no se redondeaban a enteros, sino a decimales. Debido a la forma de representar decimales en las arquitecturas de computadoras, esto podía provocar problemas en los cálculos de alta precisión donde los programadores necesitan enteros. Puedes convertir un número flotante en un entero usando el método "int()", como en este ejemplo:

>>>f = 3.5 >>>round(f) 4.0 >>>int(round(f)) 4


Método de ejemplo

Usando este conocimiento, puedes desarrollar un método para redondear decimales en enteros fácilmente. Los siguientes ejemplos muestran ejemplos cortos de métodos que determinan el techo y suelo de un número como un entero, y otro que se redondea a un lugar decimal escogido por el usuario (o un entero):

>>>import math >>>def integerFloor(x): . . . return int(floor(x)) >>>def integerCeiling(x): . . . return int(ceil(x)) >>>def rounding(x, dec): . . . if dec == 0: . . . return int(round(x)) . . . else: . . . return(round(x, dec))