Tipos de Datos en Python: Datos Numéricos

En Python los tipos de datos integrados (built-in) numéricos fundamentales son: los enteros (integers) que no tienen una parte fraccionaria, los de coma flotante (floating-point) que sí tienen una parte fraccionaria, y algunos otros tipos más específicos como pueden ser los números complejos (complex numbers) con una parte real y otra imaginaria, los decimales de precisión fija y los racionales representados como el cociente de dos números enteros con numerador y denominador. Estos tipos de datos numéricos nos permiten abordar exitosamente un sinnúmero de problemas de computo casi si la necesidad de crear tipos de datos nuevos y/o específicos como ya hemos comentado, no obstante, existe un rico universo de librerías de terceros que ofrecen muchos otros tipos de datos numéricos, diseñados expresamente para ser empleados en aplicaciones científicas: física, química, estadísticas, finanzas, big data, etc. Algunos ejemplos de estas librerías son: Numpy, Scipy y Pandas.

Tipos numéricos básicos

En esta categoría trataremos los tipos de datos int y float, que de forma general son los más empleados y los que veremos y usaremos en casi todos nuestros módulos y scripts. Con estos dos tipos de números podemos representar desde nuestra edad, hasta el saldo de nuestra cuenta bancaria y muchos otros datos que empleamos en nuestra vida cotidiana.

El tipo int

El tipo de dato int representa al conjunto de los números enteros (integers) o de números que no tiene parte fraccionaria. Son comúnmente empleados en Python como contadores, índices y subíndices, variables de iteración, entre otras.

Los números de tipo int pueden ser representados con base decimal (decimalintegers), octal (octintegers), hexadecimal (hexintegers) y binaria (binintegers), y no existe límite para su longitud a no ser el límite que impone la memoria física del ordenador donde estemos trabajando.

Algunos ejemplos de literales válidos del tipo int son:

7

10

-15

0o177

0b100110111

0xdeadbeef

El tipo int se define como una clase de la forma:

class int(x=0)
class int(x, base=10)
Que retorna un número entero construido a partir de una cadena (string) o un número x, o que retorna cero si no recibe ningún argumento. Veamos algunos ejemplos:
>>> int('125') # Conversión de tipo: de string a entero
125
>>> int('177', base=8)
127
>>> int('100110111', base=2)
311
>>> int(125)
125
>>> int(125.3) # Conversión de tipo: de flotante a entero
125
>>> int(125.8) # Conversión de tipo: de flotante a entero
125
Los objetos de tipo int pueden ser creados instanciando la clase directamente como hemos hecho aquí o usando cualquiera de sus literales válidos, como por ejemplo:
>>> int_number = int('125') # Instanciación directa
>>> int_number
125
>>> type(int_number)
<class 'int'>
>>> int_number = 125 # Instanciación usando literales
>>> int_number
125
>>> type(int_number)
<class 'int'>

El tipo float

Este tipo de datos representa a los números denominados en computación como números de coma flotante (floating-point) y que a diferencia de los enteros sí tienen parte fraccionaria. Se emplean generalmente para cálculos de mayor precisión, como pueden ser los cálculos científicos, las finanzas y la estadística.

El tipo de dato float en Python se implementa como el double de C. Los valores de coma flotante tienen dos partes, una parte de punto decimal (pointfloat) y otra parte opcional como exponente (exponentfloat). La parte de punto decimal contiene valores decimales y la parte exponencial contiene una letra “e” mayúscula o minúscula seguida de un valor exponencial distinto de cero. El signo negativo o positivo entre la “e” y el exponente denota el signo de este último.

Algunos ejemplos de literales válidos para los números de coma flotante en Python son:

10.2

5.

0.0

-1.4526

1e-3

Hacemos notar que los literales del tipo float no contienen el signo de positivo o negativo. El caso de -1.4526 se trata de una expresión donde se combinan el operador unario “-” y el literal de coma flotante 1.4526.

El tipo de dato float se define en Python como una clase de la forma siguiente:

class float([x])

Que retorna un número de coma flotante construido a partir de un número o una cadena (stirng) x válida.

>>> float('+1.23')

1.23

>>> float(' -12345\n')

-12345.0

>>> float('1e-003')

0.001

>>> float('+1E6')

1000000.0

>>> float("inf")

inf

>>> float("-infinity")

-inf

Los dos últimos ejemplos hacen referencia al número infinito muy empleado en las matemáticas superiores.

Los objetos de tipo float pueden ser creados instanciando la clase directamente o usando cualquiera de sus literales válidos, como por ejemplo:

>>> float_number = float('10.2') # Instanciación directa

>>> float_number

10.2

>>> type(float_number)

<class 'float'>

>>> float_number = 10.2 # Instanciación usando literales

>>> float_number

10.2

>>> type(float_number)

<class 'float'>

Operaciones Matemáticas Básicas

Los tipos numéricos integrados (built-in) de Python soportan las operaciones matemáticas (algebráicas) básicas, es decir, suma, resta, multiplicación y división. Por ejemplo, el símbolo de más (+) se usa para la suma, el símbolo de menos (-) se usa para la resta, el asterisco (*) para la multiplicación y la barra inclinada (/) para la división.

>>> 253 + 24 # Suma de enteros

277

>>> 51 - 120 # Resta (algebraica) de enteros

-69

>>> 2.3 * 5.4 # Multiplicación de números de coma flotante

12.42

>>> 54 / 25 # División

2.16

En este último ejemplo el resultado de la operación no pertenece a los números enteros, sino a los números de coma flotante. En este caso el intérprete (Python 3.x) se encarga de devolver el tipo de dato adecuado como resultado de la operación realizada. Esto se conoce como “División Verdadera” o “True Division”. Para aquellos que emplean la rama 2.x de Python esta última operación arroja resultados diferentes y que resultan un poco raros.

Python 2.7.11+ (default, Apr 17 2016, 14:00:29)

[GCC 5.3.1 20160413] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> 54 / 25

2

Esto sucede porque en la rama 2.x Python está llevando a cabo una división de enteros y como resultado se obtiene un entero. El redondeo en estos casos siempre es a cero, es decir, los números 2.3 y 2.8 se redondearán a 2 y este será el resultado de la operación. Para evitar este comportamiento tenemos dos opciones: o pasamos un número explícitamente convertido a coma flotante (usando float()) a la división o incluimos el punto decimal en uno de los operandos:

>>> float(3) / 2

1.5

>>> 3.0 / 2

1.5

Más Matemáticas

La librería estándar de Python incluye el módulo math que contiene muchas otras opciones para trabajar las matemáticas. Veamos algunos ejemplos:

>>> import math

>>> math.pi # Constante pi

3.141592653589793

math.sin(45) # Seno

0.8509035245341184

>>> math.log10(100) # Logaritmo base 10

2.0

>>> math.sqrt(9) # Raíz cuadrada

3.0

Bien, esto es todo por ahora, si este artículo te resultó interesante y/o útil, compártelo para que otros también puedan acceder a él. Déjanos tus comentarios y podremos mejorar nuestros contenidos.

Gracias de antemano,

lpozo