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

Por g.s. jackson
La función del entero más cercano en Python
laptop image by Angie Lingnau from Fotolia.com

Quizás debido a su reputación de lenguaje de programación flexible y potente, Python contiene muchas librerías internas para automatizar tareas matemáticas y computacionales complejas y habituales. La "librería matemática" contiene muchos métodos para realizar cálculos típicos u operaciones como redondeo. Pero redondear decimales en Python no redondea a un entero, sino a un decimal entero. Convertir a enteros requiere el uso de la librería matemática de Python junto con el uso de algunas librerías de conversión incorporadas.

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))