Cómo redondear un número en Python (función round() y decimal)
Aprenda a redondear números de punto flotante en Python. Comprenda el redondeo de Banker, la precisión decimal personalizada y el formato flotante para su visualización.
Descripción general
La aritmética de punto flotante en las computadoras a veces puede generar problemas de precisión inesperados debido a la forma en que los sistemas binarios almacenan decimales (por ejemplo, `0.1 + 0.2` se evalúa como `0.30000000000000004`). Al presentar números a los usuarios o preparar métricas, redondear números es un requisito común. Python proporciona varias formas de lograrlo.
La herramienta principal es la función incorporada `redondo (número, dígitos)`. Se necesita un número y un conteo de precisión opcional. Si se omite "ndigits", se redondea al número entero más cercano. Si se proporciona "ndigits", se redondea a ese número de decimales.
Una propiedad clave de la función `round()` de Python es que utiliza el "redondeo bancario" (redondear la mitad a par). Cuando un número está exactamente a medio camino entre dos números enteros (por ejemplo, `2.5` o `3.5`), Python redondea al número *par* más cercano. Esto significa que "redondo (2.5)" es "2" y "redondo (3.5)" es "4". Si bien es matemáticamente justo en conjuntos de datos grandes para evitar un sesgo al alza, para cálculos financieros precisos debes utilizar las herramientas de cuantificación del módulo "decimal".
Código y salida de ejecución
Este script demuestra el redondeo de flotantes utilizando la función de redondeo incorporada, ejemplos de redondeo bancario y el módulo decimal.
from decimal import Decimal, ROUND_HALF_UP
val = 3.14159
# 1. Round to nearest integer
print("Nearest Integer:", round(val))
# 2. Round to 2 decimal places
print("Two decimals:", round(val, 2))
# 3. Banker's Rounding demonstration (rounds to nearest even)
print("round(2.5):", round(2.5)) # Nearest even is 2
print("round(3.5):", round(3.5)) # Nearest even is 4
# 4. Math rounding up (Traditional rounding) using decimal module
amount = Decimal("2.5")
rounded_up = amount.quantize(Decimal("1"), rounding=ROUND_HALF_UP)
print("Decimal ROUND_HALF_UP (2.5):", rounded_up)Nearest Integer: 3
Two decimals: 3.14
round(2.5): 2
round(3.5): 4
Decimal ROUND_HALF_UP (2.5): 3Implementación paso a paso
- Llame a la función integrada round(number) para redondear un flotante al entero entero más cercano.
- Pase un segundo argumento (por ejemplo, round(num, 2)) para especificar el número de decimales que se conservarán.
- Utilice el módulo decimal con ROUND_HALF_UP para cálculos de redondeo financiero estricto.
Preguntas frecuentes
¿Por qué round(2.5) devuelve 2 en lugar de 3 en Python?
Python utiliza el redondeo de Banker, que redondea la mitad de los números al entero par más cercano. Esto reduce el sesgo estadístico (redondear la mitad de los números siempre provoca una ligera tendencia ascendente en conjuntos de datos grandes).
¿Cómo redondeo un número siempre hacia arriba o siempre hacia abajo?
Importe el módulo matemático y use math.ceil(x) para redondear hacia arriba al siguiente número entero, o math.floor(x) para redondear hacia abajo al número entero anterior.
Temas relacionados
Aprenda las mejores técnicas de formato de cadenas en Python. Compare cadenas f modernas, formato() y formato de porcentaje con ejemplos de código.
Cómo convertir una cadena a Int en PythonAprenda cómo convertir una cadena a un número entero en Python usando la función int(). Maneje los errores de forma segura y convierta números de binario, octal o hexadecimal.
Recursos recomendados de Python
Amplíe sus conocimientos con tutoriales interactivos relacionados, hojas de trucos y comparaciones de códigos.
Variables de Python y tipos de datos explicados
Comprender las variables de Python y los tipos de datos principales (cadenas, enteros, flotantes, booleanos). Una guía completa para principiantes sobre la asignación de memoria en Python.
Hoja de referencia de métodos del diccionario Python
Aprenda los métodos del diccionario de Python. Guía de referencia completa para inserciones, recuperaciones, actualizaciones y comprobaciones de pares clave-valor.
Python vs JavaScript: ¿Qué lenguaje de programación es mejor?
Una comparación completa entre Python y JavaScript. Explore las diferencias de sintaxis, el rendimiento, los casos de uso (backend frente a frontend) y ejemplos de codificación.