Saltar a contenido

Operaciones aritméticas con números flotantes

Como hemos visto ya, en matemáticas, la aritmética se encarga de estudiar las propiedades y operaciones de los números.

Símbolos matemáticos en Python

También hemos visto que, en aritmética, existen muchos símbolos que se utilizan para realizar cálculos.

Python permite utilizar algunos de estos símbolos para realizar operaciones matemáticas. A continuación, se muestran algunos de los símbolos matemáticos más comunes en Python:

  • + : Suma
  • - : Resta
  • * : Multiplicación
  • / : División
  • % : Módulo
  • ** : Exponente
  • // : División entera

Los únicos símbolos que seguramente te resultarán extraños aquí son el símbolo de porcentaje que no significa porcentaje en este contexto si no que es el llamado operador de módulo, que permite tomar el resto después de dividir un número por otro; y el doble símbolo de la barra, que se utiliza para realizar una división entera, es decir, una división que redondea hacia abajo el resultado (o solo devuelve la parte entera del cociente).

Resolviendo operaciones aritméticas

Recordemos nuestro programa de la calculadora, visto cuando estudiamos los números enteros:

Python calculadora_sumadora.py
1
2
3
4
5
6
# Ingreso de datos por el usuario, convertidos a números enteros
n1 = int(input("Ingrese el primer número: "))
n2 = int(input("Ingrese el segundo número: "))

# Imprimir el resultado directamente
print(f"La suma de {n1} y {n2} es igual a {n1 + n2}")

Nuestro código asume ingenuamente que el usuario solo ingresará números enteros. Pero si intentara ingresar números reales, con decimales, se produciría un error puesto que los tipos de datos serían incompatibles con las funciones de nuestro código:

Terminal (Entrada/Salida)
Ingrese el primer número: 1.2
Traceback (most recent call last):
  File "c:\Users\usuario\calculadora.py", line 2, in <module>
    n1 = int(input("Ingrese el primer número: "))
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: invalid literal for int() with base 10: '1.2'

Como puedes ver, el programa arroja un error porque la función int() no puede convertir un número flotante a un número entero.

Para solucionar este problema, necesitamos convertir las cadenas de caracteres ingresadas por el usuario a números flotantes en lugar de números enteros. De esta manera, podremos realizar operaciones aritméticas con números flotantes en lugar de números enteros.

Modifiquemos el programa para que acepte números flotantes en lugar de números enteros. Para ello reemplacemos en las líneas 2 y 3 la función int() por la función float():

Python calculadora_sumadora.py
1
2
3
4
5
6
# Ingreso de datos por el usuario, convertidos a números flotantes
n1 = float(input("Ingrese el primer número: "))
n2 = float(input("Ingrese el segundo número: "))

# Imprimir el resultado directamente
print(f"La suma de {n1} y {n2} es igual a {n1 + n2}")

Ahora, si ejecutas el programa y el usuario ingresa números con decimales, el programa funcionará correctamente y realizará la suma de los números flotantes ingresados:

Terminal (Entrada/Salida)
Ingrese el primer número: 1.2
Ingrese el segundo número: 3.4
La suma de 1.2 y 3.4 es igual a 4.6

Como puedes ver, al convertir las cadenas de caracteres ingresadas por el usuario a números flotantes utilizando la función float(), podemos realizar la suma de dos números flotantes correctamente.

Dividiendo números flotantes

Modifiquemos nuestro código para que, en lugar de sumar, divida los dos números ingresados por el usuario. Además, para estudiar bien en detalle que es lo que ocurrirá cuando se efectúe la división, convertiremos los datos ingresados por el usuario a números enteros:

Python calculadora_divisora.py
1
2
3
4
5
6
7
8
9
# Ingreso de datos por el usuario, convertidos a números enteros
n1 = int(input("Ingrese el primer número: "))
n2 = int(input("Ingrese el segundo número: "))

# Calcular la división de los números enteros
division = n1 / n2

# Imprimir el resultado directamente
print(f"La división de {n1} por {n2} es igual a {division}")

Ahora, si ejecutas el programa y el usuario ingresa dos números enteros, el programa calculará la división de los números enteros ingresados y mostrará el resultado en pantalla:

Terminal (Entrada/Salida)
Ingrese el primer número: 2
Ingrese el segundo número: 3
La división de 2 por 2 es igual a 0.6666666666666666

Analicemos lo ocurrido. Al dividir 2 entre 3, el resultado es 0.6666666666666666, un número flotante con decimales. A simple vista parece ser un número finito, sin redondeo extraño, aunque parezca que solo veo algunos dígitos decimales. Sin embargo, hay un límite en cuanto a qué tan preciso puede ser un valor de punto flotante, no puede ser infinito. Por lo tanto, el número flotante que se muestra en la salida del programa es una aproximación del resultado real de la división de 2 entre 3.

Además. como puedes ver, al dividir dos números enteros, el resultado es un número flotante, ya que la división de dos números enteros puede dar como resultado un número con decimales.

¡Cuidado con la división de números enteros!

Es importante tener en cuenta que, al dividir dos números enteros, el resultado puede ser un número flotante en lugar de un número entero.

Por lo tanto, el operador de división / en Python siempre devolverá un número flotante, incluso si los dos números divididos son enteros.

Más operaciones aritméticas

Muy bien, si has entendido todo el procedimiento explicado anteriormente, te habrás dado cuenta que la única modificación que hicimos fue cambiar la función int() por la función float() para convertir las cadenas de caracteres ingresadas por el usuario a números flotantes en lugar de números enteros. De igual manera, el resto del código sigue siendo el mismo.

Así que si deseas realizar otras operaciones aritméticas con números flotantes, como la resta, la multiplicación, la división, el módulo y el exponente, solo debes aplicar el operador correspondiente en lugar del operador de suma + en el código, y escribir tu código siguiendo toda la metodología estudiada cuando vimos números enteros, ya que podríamos decir que es la misma para aplicar a números flotantes.

Sin embargo, los números flotantes permiten resolver problemas más complejos que los números enteros, ya que los números flotantes pueden representar números decimales, lo que los hace más precisos y versátiles que los números enteros. Por este motivo, los números flotantes cuentan con un conjunto de funciones que permiten potenciar su uso en la programación. Y es justamente lo que vamos a ver a continuación.