Cómo redondear números en Python

En éste artículo te vamos a mostra cómo redondear números en Python para aprender a realizar cálculos con decimales de forma más exacta.

Cómo redondear números en Python

Redondear números decimales con Python

Digamos que estamos creando una aplicación para finanzas ya sea un local de ventas, una bodega o una ferretería y por lo tanto necesita realizar cálculos precisos con números decimales y no quiere que ocurran los pequeños errores que ocurren naturalmente con los flotantes. Es por ellos que vamos a mostrar como redondear decimales con Python. Un ejemplo de suma de flotantes o decimales es el siguiente:

a=4.2
b=3.1
a+b

Dando como resultado

7.300000000000001

Estos errores son una característica de la CPU subyacente y la aritmética IEEE 754 realizada por su unidad de coma flotante. Ya que que el tipo de datos flotante de Python almacena datos usando la representación nativa, no hay nada que pueda hacer para evitar tales errores si escribe su código usando instancias flotantes. POr lo tanto si desea más precisión puede usar el módulo decimal:

from decimal import Decimal
a=4.2
b=3.1
Decimal(a+b)
Lo cual nos dará como resultado :
'7.300000000000000710542735760100185871124267578125'

A primera vista, puede parecer un poco extraño (es decir, especificar números como cadenas). Sin embargo, los objetos Decimal funcionan de todas las formas que puedes necesitar en funciones de formato de cadena.

Una característica importante de decimal es que nos permite controlar diferentes aspectos de los cálculos, incluyendo el número de dígitos y el redondeo. Para hacer esto,vamos a crear un contexto local y cambiar su configuración:

from decimal import Decimal
from decimal import localcontext
a = Decimal('1.3')
b = Decimal('1.9')
print(a / b)
0.6842105263157894736842105263
with localcontext() as ctx:
    ctx.prec = 5
    print(a / b)

Y el resultado para el código anterior sería el siguiente. Copia y pega en el IDLE Python


0.68421

En este código, establecemos la precisión en 5 dentro del bloque with localcontext() as ctx. Al imprimir el resultado de la divsion a y b dentro de este contexto, se obtiene el resultado: 0.68421. La precisión se ha ajustado a 5 dígitos decimales, de igual manera se pueden cambiar a más dígitos para redondear.

Espero que cada uno de los ejemplos publicados sean de ayuda para resolver los problemas para redondear números decimales con Python y así ejecutar cálculos mas sofisticados y correctos.

Artículo Anterior Artículo Siguiente