2. Datos numéricos

En Python, existen diferentes tipos de datos numéricos que se pueden utilizar para almacenar y trabajar con números. Los principales tipos de datos numéricos son los enteros (int), los números de punto flotante (float) y los números complejos (complex), que por ahora no vamos a tratar.

Los enteros son números enteros, positivos o negativos sin decimales. Por ejemplo, 1, -2 y 100 son números enteros.

Los números de punto flotante son números con decimales. Por ejemplo, 1.5, 3.14 y -0.75 son números de punto flotante.

Nota

En Python los decimales se separan con un punto. En español no es la forma correcta de separar los decimales, porque se debe utilizar la coma, pero los decimales en Python no se traducen a la forma española porque esto daría lugar a errores a la hora de programar el mismo código en distintos países.

En Python es fácil trabajar con estos tipos de datos numéricos utilizando operadores matemáticos comunes como la suma, la resta, la multiplicación, la división o la potencia. También es posible realizar operaciones más avanzadas como el cálculo del módulo, redondeo, truncamiento, funciones trigonométricas, etc. utilizando funciones especiales.

Operaciones con números enteros

Los números enteros son números sin decimales. Las operaciones básicas que se pueden aplicar a los números enteros son las siguientes:

Símbolo Operación
+ Suma
- Resta
* Multiplicación
// División entera (sin calcular decimales)
% Resto de una división
** Potencia (elevado a un número)

Copia los siguientes ejemplos en el entorno IDLE para comprobar que funcionan correctamente:

>>> 2 + 6
8
>>> 5 - 9
-4
>>> 11 // 3
3
>>> 11 % 3
2
>>> 5 ** 2
25

Los números enteros en Python pueden ser muy grandes y tener muchísimas cifras de precisión:

>>> 123 ** 456
9925006877209885670083146205746963263729594081988690051981629888138
2867104749399077921128661426144638055424236936271872492800352741649
9021181438196726015699981001207904967595176364654458956257416098662
0990050019840715324460477896801696302805031026141761591446872991824
0685487878617645976939063464357986165711730976399478507649228686341
4669671679101266533421349427448514638999274870924866109771461127635
6710167264595313219648143933987301708814041466127119850033325571309
6142335151414630651683065518784081203678487703002802082091236603519
0262568806244996817813872275740354848312715156831237421490955692604
6360965597770093884458061193124649516620869554031369814001163802732
2566252689780838136351828795314272162111222231170901715612355701347
5523715300136938553798348656670600146433024591004297836539669137830
0229078428345562828335547052993295605148447712933388115993021275868
7602795088579230431661696010232187390436601614145603241902386663442
520160735566561

Operaciones con números en coma flotante

Los números en coma flotante son números con decimales.

Los números enteros también se pueden almacenar como números en coma flotante, pero en este caso pierden la gran precisión que tienen los números enteros para almacenar solo 16 cifras de precisión y números hasta 10^307 de máximo tamaño. El número entero 2 en coma flotante se verá como 2.0, con un cero añadido después de la coma decimal.

Las operaciones básicas que se pueden aplicar a los números en coma flotante son las siguientes:

Símbolo Operación
+ Suma
- Resta
* Multiplicación
/ División con decimales
% Resto de una división
** Potencia (elevado a un número)
round(number, digits) Redondea un número en coma flotante a digits decimales.

Copia los siguientes ejemplos en el entorno IDLE para comprobar que funcionan correctamente:

>>> 2.0 + 6.0
8.0
>>> 5.0 - 9.0
-4.0
>>> 11 / 3
3.6666666666666665
>>> 11.0 % 3.5
0.5
>>> 5.0 ** 3.2
172.4662076826519
>>> round(3.1415926, 4)
3.1416

Errores decimales en coma flotante

Los números en coma flotante se almacenan dentro del ordenador como números binarios, no como números decimales. A la hora de representar el número en la pantalla se convierte el número binario en decimal. Esto hace que se produzcan errores a la hora de almacenar y de realizar cálculos con decimales. Un ejemplo práctico es la siguiente suma:

>>> 0.1
0.1
>>> 0.2
0.2
>>> 0.1 + 0.2
0.30000000000000004

Los números decimales se almacenan con un pequeño error que no es visible al mostrarlos en la pantalla, sin embargo la suma de los dos números decimales da como resultado un número con un pequeño error que sí es visible en el decimal número 17.

Estos errores de redondeo se producen solo con la parte decimal de los números en coma flotante y no se producen con los números enteros, aunque estos se almacenen en formato de coma flotante:

>>> 1.0 + 2.0
3.0

Conversión de tipos

Hay varios casos en los que se pueden convertir los tipos de datos de números enteros a coma flotante o viceversa.

División de dos números enteros

La operación división con decimales / aplicada a números enteros puede dar como resultado un número con decimales, que se almacenará como un número en coma flotante.

>>> 5 / 3
1.6666666666666667
Operaciones mixtas entre enteros y flotantes

Una operación cualquiera entre un número entero y un número en coma flotante dará como resultado un número en coma flotante.

>>> 5 * 2.0
10.0
>>> 5 + 2.0
7.0
>>>
Forzar la conversión de tipos

Se puede forzar que un número se convierta de un tipo a otro tipo con las siguientes funciones:

  • int(n) Convierte el número n en un número entero
  • float(n) Convierte el número n en un número en coma flotante

Ejemplos de conversiones (también llamadas cast):

>>> int(5.6)
5
>>> float(8)
8.0

Otras operaciones matemáticas

Para realizar más operaciones matemáticas con números enteros o con números en coma flotante, es necesario importar la librería math que da acceso a multitud de operaciones matemáticas avanzadas.

Algunos ejemplos son los siguientes:

>>> import math
>>> math.gcd(24, 18)
6

La palabra clave import se utiliza para importar una librería de Python, que dará acceso a muchas funciones extras. En este ejemplo se ha utilizado la función math.gcd() que devuelve el máximo común divisor (greatest common divisor) de varios números.

Se pueden ver todas las funciones de la librería math en la documentación oficial del lenguaje Python.