¿Trabajar con tipos de datos numéricos en Python? Llévalo al siguiente nivel aprendiendo las diferentes formas de redondear números en Python.
La mayoría de los conjuntos de datos del mundo real contienen características numéricas y categóricas. Existe una amplia gama de funciones digitales, desde lecturas de sensores hasta tipos de cambio de divisas, señales biomédicas y más.
Cuando trabaje con valores numéricos, es posible que necesite redondear estos valores a una precisión fija por los siguientes motivos:
- Garantizar un formato coherente
- Almacenamiento y procesamiento más sencillos
En este tutorial, aprenderemos las diferentes formas de redondear un número a una precisión específica, redondear números al entero más cercano y mucho más.
Empecemos.
Cómo redondear números usando la función incorporada round()
La forma más común de redondear números en Python es usar el función redonda (). Empecemos por aprender su sintaxis:
round(num, ndigits)
Aquí,
num
es el numero que quieres redondearndigits
es un parámetro opcional con un valor predeterminado deNone
. Este es el número de lugares a los que se debe redondear el número. Sindigits
= 2, num se redondea a dos lugares después del punto decimal.- EL
round()
la función regresanum
redondeado andigits
precisión después del punto decimal.
Ejemplos de uso de la función round() de Python
Codifiquemos algunos ejemplos para entender cómo round()
La función funciona.
Como se mencionó, ndigits
es opcional. Entonces cuando llamamos round()
con solo el número, el número se redondea al entero más cercano.
number = 7.123456
rounded = round(number)
print(rounded)
# Output: 7
Ahora veamos algunos ejemplos en los que especificamos precisión.
Con ndigits
establecido en 2, number
se redondea a dos decimales (décimo):
number = 7.123456
rounded = round(number, 2)
print(rounded)
# Output: 7.12
Con ndigits
establecido en 3, number
se redondea a tres decimales (centésimas):
number = 7.123456
rounded = round(number, 3)
print(rounded)
# Output: 7.123
Puedes usar round()
para redondear también números negativos:
number = -3.4
rounded = round(number)
print(rounded)
# Output: -3
Aquí la función redondea -3,4 a -3, el número entero más cercano.
Redondear a las decenas y centenas más cercanas
Sabía usted que ndigits
¿También puede tomar valores negativos?
Si, puedes llamar round()
función con valores negativos para ndigits
. Al hacer esto, el redondeo se produce a la izquierda del punto decimal en lugar de a la derecha.
¿Qué significa? Veamos algunos ejemplos.
Cuando configuramos ndigits en -1, el número se redondea a la decena más cercana.
number = 7.123456
rounded = round(number, -1)
print(rounded)
# Output: 10.0
Y llámalo round()
La función con ndigits establecido en -2 redondea el número 77,123456 a la centena más cercana, que en este caso es 100,0.
number = 77.123456
rounded = round(number, -2)
print(rounded)
# Output: 100.0
Hasta ahora, el round()
La función parece seguir los principios generales de redondeo que aprendimos en matemáticas en la escuela. Pero no siempre es así.
Hay algunos limitaciones con punto flotante Números. Por lo tanto, es posible que veas resultados inesperados al redondear. Otra advertencia interesante se refiere al redondeo bancario.
¿Qué es el redondeo bancario?
Inicie un REPL de Python y pruebe el siguiente ejemplo:
>>> round(1.5)
2
Vemos eso round(1.5)
devuelve 2 (como se esperaba). Entonces, ¿qué debería round(2.5)
¿atrás?
>>> round(2.5)
2
Interesante, ¿verdad? Los dos round(1.5)
Y round(2.5)
volver 2. ¿Pero cómo y por qué?
Internamente, la función de redondeo funciona así: cualquier valor a medio camino entre dos números enteros se redondea al entero par más cercano. Se llama redondeo bancario o media vuelta para igualar la estrategia.
Sabemos que el round()
la función es suficiente para tareas de redondeo sencillas. Pero a veces es posible que tengas que redondear un número hacia arriba o hacia abajo.
Entonces como haces esto? Aprendamos esto en la siguiente sección.
Cómo redondear números en Python
Para redondear un número al entero más cercano, puedes utilizar:
- EL
ceil()
función de matemáticas módulo o - EL decimal módulo
Utilice math.ceil
EL ceil()
la función (o función techo) funciona así: Redondea un número al entero más pequeño mayor que el número.
El siguiente fragmento muestra cómo utilizar el ceil()
función para redondear el número 3.2:
import math
number = 3.2
rounded_up = math.ceil(number)
print(rounded_up)
# Output: 4
Usando el módulo decimal
Hasta ahora hemos utilizado el tipo de datos flotante incorporado. Pero para algunas aplicaciones en informática científica y finanzas, necesitamos una precisión mucho mayor. Y para ello, Python viene con el módulo decimal que proporciona:
- Aritmética de coma flotante más precisa
- Pruebas de igualdad confiables
- Control más preciso del nivel de precisión (la precisión predeterminada es 28 lugares)
Para ver el contexto actual, utilizando getcontext()
como se muestra:
from decimal import getcontext
current_context = getcontext()
print(current_context)
Debería poder ver la precisión actual y el modo de redondeo, entre otras cosas:
# Output
Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999,
capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow])
Para redondear un número, puedes usar quantize()
precisando :
- La precisión (0,0 ya que queremos redondear al número entero más cercano) y
- El método de redondeo:
ROUND_CEILING
from decimal import Decimal, ROUND_CEILING
number = Decimal('3.2')
rounded_up = number.quantize(Decimal('0'), rounding=ROUND_CEILING)
print(rounded_up)
# Output: 4
Aquí, el número 3,2 se ha redondeado al siguiente número entero 4.
Cómo redondear números en Python
Ahora veamos cómo redondear números en Python. De manera similar al proceso de redondeo, podemos usar módulos matemáticos o módulos decimales.
Utilice math.floor
EL floor()
la función del módulo matemático funciona así: redondea un número al mayor entero menor que el número.
Considere el siguiente ejemplo:
import math
number = 3.8
rounded_down = math.floor(number)
print(rounded_down)
# Output: 3
Aquí el floor()
La función redondea el número de coma flotante de 3,8 a 3.
Usando el módulo decimal
Para redondear un número, puedes usar quantize()
configurando el modo de redondeo en ROUND_FLOOR
.
from decimal import Decimal, ROUND_FLOOR
number = Decimal('3.8')
rounded_down = number.quantize(Decimal('0'), rounding=ROUND_FLOOR)
print(rounded_down)
# Output: 3
Como vemos, 3,8 se ha redondeado a 3.
Errores comunes que se deben evitar al redondear números
Ya hemos visto que el round()
la función redondea la mitad a par, lo que no siempre es deseado. Existen otros errores comunes que se deben evitar al redondear números en Python:
- Comparación de igualdad incorrecta: El redondeo de números a menudo introduce errores de redondeo. Si intenta realizar una comparación de igualdad entre un resultado redondeado con otro valor, la verificación de igualdad (casi siempre) fallará debido a la precisión variable. Por lo tanto, trate de evitar comprobaciones de igualdad entre números de coma flotante y números de coma flotante redondeados. Si la comparación es necesaria, introduzca un umbral de tolerancia.
- Pérdida de información: Es posible que desee capturar con alta precisión ciertos datos, como lecturas de sensores en diferentes marcas de tiempo. Redondear estos datos a menos decimales provoca pérdida de información y análisis incorrectos.
- Redondeo de resultados intermedios: A menudo tendrás que realizar varios pasos como parte del cálculo. Utilice una precisión constante en todas las etapas. Evite también el redondeo en los pasos intermedios para evitar que los errores de redondeo empeoren.
Mejores prácticas para redondear números en Python
Enumeremos algunas de las mejores prácticas a seguir al redondear números en Python:
- Elija el tipo de datos correcto: Elija entre tipos de datos flotantes y decimales según la aplicación. Si necesita realizar aritmética de punto flotante de alta precisión, elija el tipo de datos decimal.
- Utilice niveles consistentes de precisión: establezca niveles de precisión consistentes para números decimales en todo el programa para evitar errores de redondeo inesperados.
- Técnicas de redondeo de documentos: En aplicaciones del mundo real que involucran datos como moneda y lecturas de sensores, es importante tener una técnica de redondeo consistente y documentada.
Envoltura
Terminemos el tutorial con una descripción general rápida de lo que aprendimos:
- Puedes usar el
round()
trabajar con esta sintaxisround(num, ndigits)
. Al usar elround()
función, es necesario conocer la estrategia de redondeo del banquero. Por lo tanto, redondea los números exactamente entre dos números enteros al entero par más cercano. - Puedes usar el
ceil()
Yfloor()
funciones del módulo matemático para redondear respectivamente un número dado al entero más cercano. - Cuando necesite realizar aritmética de punto flotante de alta precisión, utilice el módulo decimal. Puede redondear números con la precisión y la estrategia de redondeo requeridas.
- Debes tener en cuenta los errores comunes al redondear números en Python. Estos incluyen la pérdida de información debido al redondeo, el redondeo de resultados en pasos intermedios y el uso de diferentes precisiones en diferentes partes del código.
- Las mejores prácticas incluyen elegir el tipo de datos apropiado según la aplicación y documentar niveles consistentes de precisión.
Luego aprenda cómo realizar la división del piso en Python.
¿Te resultó útil este artículo
¡Gracias por su opinión!
Si quiere puede hacernos una donación por el trabajo que hacemos, lo apreciaremos mucho.
Direcciones de Billetera:
- BTC: 14xsuQRtT3Abek4zgDWZxJXs9VRdwxyPUS
- USDT: TQmV9FyrcpeaZMro3M1yeEHnNjv7xKZDNe
- BNB: 0x2fdb9034507b6d505d351a6f59d877040d0edb0f
- DOGE: D5SZesmFQGYVkE5trYYLF8hNPBgXgYcmrx
También puede seguirnos en nuestras Redes sociales para mantenerse al tanto de los últimos post de la web:
- Telegram
Disclaimer: En Cryptoshitcompra.com no nos hacemos responsables de ninguna inversión de ningún visitante, nosotros simplemente damos información sobre Tokens, juegos NFT y criptomonedas, no recomendamos inversiones