Métodos para obtener y mostrar el número de dígitos en Python | Guía práctica para manejar fácilmente enteros y decimales

目次

1. Introducción

Python es un lenguaje de programación con una sintaxis simple y potentes funcionalidades, amado por muchos desarrolladores. En este artículo, explicamos los métodos para realizar operaciones relacionadas con el «número de dígitos» en Python. La obtención del número de dígitos y el control de su visualización son habilidades importantes que resultan útiles en diversos escenarios, como el procesamiento de datos y el formateo.

Dirigido a principiantes y usuarios de nivel intermedio, detallamos cómo obtener el número de dígitos de enteros y decimales, así como cómo mostrar datos con un número específico de dígitos. Al leer este artículo, podrás adquirir conocimientos prácticos que serán útiles en el trabajo o en proyectos.

2. Cómo obtener el número de dígitos de un número en Python

El método para obtener el número de dígitos de un número varía según si los datos a manejar son «enteros» o «decimales». En esta sección, explicaremos cada caso dividiéndolos y proporcionando ejemplos específicos.

Cómo obtener el número de dígitos de enteros

Método básico

En Python, usando la str() función para convertir el entero a cadena y la len() función para obtener la longitud de la cadena, se puede calcular el número de dígitos.

Ejemplo:

num = 12345
num_digits = len(str(num))
print(num_digits)  # Salida: 5

Método para manejar números negativos

Al manejar números negativos, se usa la abs() función para obtener el valor absoluto y luego calcular el número de dígitos.

Ejemplo:

num = -12345
num_digits = len(str(abs(num)))
print(num_digits)  # Salida: 5

En el caso de enteros muy grandes

Python puede manejar enteros muy grandes, pero si superan los 4300 dígitos, puede haber restricciones al convertir a cadena. En este caso, se puede usar sys.set_int_max_str_digits() para relajar las restricciones.

Ejemplo:

import sys
sys.set_int_max_str_digits(0)  # Eliminar la restricción
num = 10 ** 5000
print(len(str(num)))  # Salida: 5001

Cómo obtener el número de dígitos de decimales

Calcular el número de dígitos eliminando el punto decimal

Para obtener el número de dígitos de un número que incluye un punto decimal, se convierte a cadena con str(), se elimina el punto decimal con replace() y luego se calcula el número de dígitos.

Ejemplo:

num = 123.456
num_digits = len(str(num).replace('.', ''))
print(num_digits)  # Salida: 6

Método para contar solo los dígitos

Para contar solo los dígitos en la cadena, se usa una expresión de comprensión de listas.

Ejemplo:

num = -123.456
num_digits = sum(c.isdigit() for c in str(num))
print(num_digits)  # Salida: 6

Ejemplo práctico: Casos de uso para obtener el número de dígitos

Como ejemplos específicos de situaciones donde se obtiene el número de dígitos, se pueden mencionar los siguientes.

  1. Análisis de datos:
  • Contar el número de dígitos de los datos numéricos para detectar valores atípicos.
  1. Validación de entrada:
  • Confirmar si el número de dígitos de un número de tarjeta de crédito o teléfono es correcto.

Ejemplo:

# Validación del número de dígitos del número de teléfono
phone_number = "08012345678"
if len(phone_number) == 11:
    print("Número de dígitos correcto.")
else:
    print("Número de dígitos incorrecto.")
侍エンジニア塾

3. Cómo especificar el número de dígitos de visualización de números en Python

En Python, al especificar el número de dígitos de visualización de números, se puede mejorar la apariencia de los datos o mantener la precisión necesaria. En esta sección, explicamos el uso de la función format() y las f-strings, así como el procesamiento de redondeo utilizando la función round().

Formato usando la función format()

Ejemplo de uso básico

La función format() permite formatear números especificando el número de dígitos después del punto decimal.

Ejemplo:

num = 3.14159
formatted_num = "{:.2f}".format(num)
print(formatted_num)  # Salida: 3.14

En este ejemplo, se especifica mostrar hasta 2 dígitos después del punto decimal.

Cómo especificar dinámicamente el número de dígitos

También es posible especificar el número de dígitos de forma dinámica con una variable.

Ejemplo:

num = 3.14159
precision = 3
formatted_num = "{:.{}f}".format(num, precision)
print(formatted_num)  # Salida: 3.142

Al cambiar el valor de la variable precision, se puede especificar el número de dígitos de manera flexible.

Formato usando f-strings (literales de cadena con formato)

Ejemplo de uso básico

A partir de Python 3.6, se pueden formatear números de manera concisa utilizando f-strings.

Ejemplo:

num = 3.14159
formatted_num = f"{num:.2f}"
print(formatted_num)  # Salida: 3.14

En este ejemplo, se especifica hasta 2 dígitos después del punto decimal con el formato {num:.2f}.

Cómo especificar dinámicamente el número de dígitos

Con las f-strings también es posible especificar el número de dígitos con una variable.

Ejemplo:

num = 3.14159
precision = 4
formatted_num = f"{num:.{precision}f}"
print(formatted_num)  # Salida: 3.1416

Procesamiento de redondeo usando la función round()

Ejemplo de uso básico

La función round() permite redondear números a un número específico de dígitos.

Ejemplo:

num = 3.14159
rounded_num = round(num, 2)
print(rounded_num)  # Salida: 3.14

Precaución con el redondeo a par

La función round() realiza un «redondeo a par» (redondeo del banquero) en el caso de empatar al redondear. Esto puede producir resultados no intuitivos en ciertos casos.

Ejemplo:

num = 2.675
rounded_num = round(num, 2)
print(rounded_num)  # Salida: 2.67

En el caso anterior, es necesario prestar atención al hecho de que 2.675 se redondea a 2.67 en lugar de a 2.68.

Ejemplo práctico: Formato de datos

  1. Visualización de gráficos o tablas:
  • Al mostrar los datos con un número específico de dígitos después del punto decimal, se mejora la apariencia de los gráficos o tablas.
   data = [3.14159, 2.71828, 1.61803]
   formatted_data = [f"{x:.2f}" for x in data]
   print(formatted_data)  # Salida: ['3.14', '2.72', '1.62']
  1. Salida a archivos:
  • Se utiliza al escribir números formateados en archivos CSV o de texto.
   with open("output.txt", "w") as file:
       file.write(f"{3.14159:.2f}")

4. Notas sobre la precisión de los números de punto flotante y el redondeo

Al manejar números en Python, es necesario ser consciente de los problemas relacionados con la precisión de los números de punto flotante y el redondeo. En esta sección, se explican las características de los números de punto flotante y las precauciones respecto a la precisión, y se introducen técnicas para realizar cálculos con mayor precisión.

Límites de la precisión de los números de punto flotante

En Python, los números de punto flotante se representan en 64 bits basados en el estándar IEEE 754. Debido a esta especificación, pueden ocurrir errores muy pequeños. Por ejemplo, los resultados de cálculos como el siguiente pueden no ser intuitivos.

Ejemplo:

result = 0.1 + 0.2
print(result)  # Salida: 0.30000000000000004

Estos errores se deben a que los números de punto flotante se representan con un número finito de bits.

Precauciones en el procesamiento de redondeo

Redondeo a par (redondeo del banquero)

La función round() de Python adopta el redondeo a par. Por lo tanto, los resultados pueden diferir de lo esperado.

Ejemplo:

num = 2.675
rounded_num = round(num, 2)
print(rounded_num)  # Salida: 2.67

El redondeo a par es un método en el que, al redondear, cuando el decimal es 0.5, se ajusta para que el valor redondeado sea par.

Métodos para realizar cálculos de alta precisión

Uso del módulo decimal

Al usar el módulo decimal de Python, es posible realizar cálculos que minimizan los errores relacionados con los números de punto flotante. Con el módulo decimal, se puede especificar flexiblemente la precisión y el método de redondeo.

Ejemplo:

from decimal import Decimal, ROUND_HALF_UP

num = Decimal('2.675')
rounded_num = num.quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)
print(rounded_num)  # Salida: 2.68

En este ejemplo, al especificar ROUND_HALF_UP, el redondeo de cinco hacia arriba se comporta de manera intuitiva.

Configuración de la precisión

Con el módulo decimal, se puede configurar manualmente la precisión de cálculo.

Ejemplo:

from decimal import Decimal, getcontext

getcontext().prec = 50  # Configurar la precisión en 50 dígitos
num = Decimal('1') / Decimal('3')
print(num)  # Salida: 0.33333333333333333333333333333333333333333333333333

Ejemplo práctico: Usos de los cálculos de alta precisión

  1. Cálculos financieros:
  • Se utiliza en cálculos donde no se toleran errores, como el cálculo de intereses o el procesamiento de redondeo de monedas.
   from decimal import Decimal, ROUND_DOWN
   amount = Decimal('123.4567')
   rounded_amount = amount.quantize(Decimal('0.01'), rounding=ROUND_DOWN)
   print(rounded_amount)  # Salida: 123.45
  1. Cálculos científicos:
  • Es útil para cálculos científicos que requieren una precisión extremadamente alta.
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

5. Preguntas frecuentes (FAQ)

Para resolver las dudas comunes que los principiantes y usuarios intermedios suelen tener al manipular el número de dígitos en Python, se han resumido a continuación preguntas y respuestas específicas.

1. ¿Cómo crear una cadena con un número fijo de dígitos en Python?

Para convertir un número en una cadena con un número fijo de dígitos, utilice el método zfill(). Este método agrega ceros delante del número hasta alcanzar el número de dígitos necesario。

Ejemplo:

num = 42
fixed_length_str = str(num).zfill(5)
print(fixed_length_str)  # Salida: 00042

2. ¿Cómo truncar el número de dígitos después del punto decimal en Python?

Para truncar el número de dígitos después del punto decimal, utilice la función int() o la función math.floor() en combinación。

Ejemplo:

num = 3.14159
truncated_num = int(num * 100) / 100
print(truncated_num)  # Salida: 3.14

O, utilice el módulo decimal para truncar de manera más flexible。

Ejemplo:

from decimal import Decimal, ROUND_DOWN

num = Decimal('3.14159')
truncated_num = num.quantize(Decimal('0.01'), rounding=ROUND_DOWN)
print(truncated_num)  # Salida: 3.14

3. ¿Cuáles son las causas de errores al obtener el número de dígitos y cómo contrarrestarlos?

Una causa común de errores al obtener el número de dígitos es que se pase data no numérica. Para prevenir este problema, es efectivo verificar el tipo de datos previamente usando la función isinstance()

Ejemplo:

def get_digits(value):
    if isinstance(value, (int, float)):
        return len(str(abs(int(value))))
    else:
        raise ValueError("Proporcione datos de tipo numérico。")

print(get_digits(12345))  # Salida: 5
print(get_digits("文字列"))  # ValueError: Proporcione datos de tipo numérico。

4. ¿Cómo redondear a un número específico de dígitos en Python?

Para redondear un número a un número específico de dígitos, utilice la función round() o el módulo decimal

Ejemplo: Usando round()

num = 2.675
rounded_num = round(num, 2)
print(rounded_num)  # Salida: 2.67

Ejemplo: Usando el módulo decimal

from decimal import Decimal, ROUND_HALF_UP

num = Decimal('2.675')
rounded_num = num.quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)
print(rounded_num)  # Salida: 2.68

5. ¿Cómo formatear especificando dinámicamente el número de dígitos en Python?

Para especificar dinámicamente el número de dígitos, utilice f-strings o la función format()

Ejemplo: Usando f-strings

num = 3.14159
precision = 3
formatted_num = f"{num:.{precision}f}"
print(formatted_num)  # Salida: 3.142

Ejemplo: Usando la función format()

num = 3.14159
precision = 4
formatted_num = "{:.{}f}".format(num, precision)
print(formatted_num)  # Salida: 3.1416

6. Resumen

En este artículo, explicamos en detalle cómo manipular el número de dígitos de los números en Python. A continuación, repasaremos los puntos aprendidos en cada sección y propondremos aplicaciones para el trabajo práctico futuro.

Lo aprendido en este artículo

  1. Métodos para obtener el número de dígitos de un número:
  • Al convertir enteros o decimales a cadenas, se puede calcular fácilmente el número de dígitos.
  • Aprendimos técnicas para manejar números negativos o valores muy grandes.
  1. Métodos para especificar el número de dígitos de visualización de un número:
  • format() función o cadenas f para formatear números.
  • También explicamos métodos para redondear o truncar a un número específico de dígitos.
  1. Precisión de los números de punto flotante y precauciones al redondear:
  • Entendimos los límites de precisión de los números de punto flotante y aprendimos cómo usar el módulo decimal para evitar errores.
  1. Ejemplos específicos en FAQ:
  • A través de respuestas específicas a preguntas comunes, aclaramos métodos de aplicación en el trabajo práctico.

Aplicación en el trabajo práctico y próximos pasos

  • Uso en análisis de datos y formateo:
    Usando las técnicas aprendidas, se puede mostrar datos en una forma legible durante el análisis de datos o creación de gráficos. Además, es posible formatear datos con alta precisión al exportar a CSV o informes.
  • Optimización de código:
    Aprovechemos las funciones flexibles de manipulación numérica de Python para escribir código eficiente y de alta legibilidad. En particular, utilizando el módulo decimal, se puede realizar cálculos con alta precisión.
  • Recursos para aprendizaje adicional:
    Aprovechemos la documentación oficial de Python y sitios de referencia confiables para adquirir conocimiento más profundo.
  • Documentación oficial de Python

Propuesta para los lectores

  • Marcar este artículo como favorito:
    Marquemos este artículo como favorito para poder referenciarlo rápidamente cuando sea necesario.
  • Leer otros artículos:
    No solo la manipulación de dígitos, sino aprendiendo operaciones básicas y técnicas avanzadas de Python, se puede mejorar aún más las habilidades.