PYTHON - NUMEROS DE PUNTO FLOTANTE

Puedes ver todo el contenido de este vídeo GRATIS, simplemente registrandote

En esta sesión demostramos el uso de aritmética de punto flotante con Python, sus limitaciones y consideraciones necesarias.

Cargando video...

NOTA: ¡Este curso se encuentra disponible, completo y 100% gratis para ti!. Solo es necesario registrarse para poder disfrutarlo sin coste.

Descripción del Vídeo

En Python, al contrario de los números enteros, los de punto flotante sí tienen límite, dependiendo de la implementación (para 32 bits, ~ 1.79*10308). 

Los números de punto flotante son una aproximación de los números reales en matemáticas. Deben ser utilizados teniendo en cuenta las consideraciones de su implementación y precisión (que no son una limitante de Python en sí mismo, sino de los sistemas computacionales).

Pueden especificarse también en notación científica.

Redondear / truncar
>>> x = 7/3
>>> x
2.3333333333333335
>>> type(x)

# En notación científica:
>>> x=2.1234e5
>>> x
212340.0
>>> type(x)

# Un número de punto flotante no puede representar números de precisión arbitraria
>>> x = 23.12345678901234567890123456789
>>> x
23.123456789012344
# Al convertir a entero con 'int', se trunca el valor (por debajo) y con 'round' se redondea
>>> int(x)
23
>>> round(x)
23
>>> int(19.5)
19
>>> round(19.5)
20
>>> x = 63.34847
>>> x
63.34847
>>> round(x)
63
>>> type(round(x))

>>> round(x,1)
63.3
>>> type(round(x,1))

>>> round(x,2)       
63.35
>>> round(x,3)
63.348
>>> round(x,4)
63.3485
# Hay que estar atentos a las operaciones y lógica realizadas con punto flotante
>>> 0.1+0.1+0.1
0.30000000000000004
# Al comparar sin tener en cuenta la precisión, podemos encontrar resultados 'inesperados'
>>> 0.1+0.1+0.1 == 0.3
False
>>> round(0.1+0.1+0.1, 1) == round(0.3, 1)
True
# Y recordar que aunque los enteros son de precisión arbitraria, los números de punto flotante no:
>>> x = 2**1000000
>>> type(x)

>>> x = x / 2
Traceback (most recent call last):
 File "", line 1, in 
OverflowError: integer division result too large for a float
>>> x = x // 2

Rating

Global

Ver video en playlist

comments powered by Disqus

Headshot of Juan Paredes

Juan Paredes

Ingeniero de Sistemas con amplia experiencia, especializado en el desarrollo y arquitectura de software.