Explorar la Representación de Números de Punto Flotante
En este paso, explorarás cómo se representan los números de punto flotante (floating-point numbers) en Python y las posibles implicaciones que esta representación puede tener en las comparaciones numéricas. Los números de punto flotante se utilizan para representar números reales (números con puntos decimales) en las computadoras. Sin embargo, debido a la forma en que se almacenan en la memoria, a menudo son aproximaciones de los números reales reales. Esto puede llevar a resultados inesperados al realizar comparaciones.
Comencemos creando un archivo de Python llamado float_representation.py
en tu directorio ~/project
utilizando el editor VS Code.
## Create a floating-point number
x = 0.1 + 0.2
## Print the value of x
print(x)
Guarda el archivo y luego ejecútalo utilizando el siguiente comando en la terminal:
python float_representation.py
Podrías esperar que la salida sea 0.3
, pero probablemente verás algo como esto:
0.30000000000000004
Esto se debe a que 0.1
y 0.2
no se pueden representar exactamente como números de punto flotante. El resultado de la suma es un número que está muy cerca de 0.3
, pero no es exactamente igual a él.
Ahora, veamos cómo esta imprecisión puede afectar las comparaciones. Agrega el siguiente código a tu archivo float_representation.py
:
## Create a floating-point number
x = 0.1 + 0.2
## Check if x is equal to 0.3
if x == 0.3:
print("x is equal to 0.3")
else:
print("x is not equal to 0.3")
Guarda el archivo y ejecútalo nuevamente:
python float_representation.py
Probablemente verás la siguiente salida:
x is not equal to 0.3
Esto se debe a que x
no es exactamente igual a 0.3
debido al problema de representación de números de punto flotante.
Para comparar números de punto flotante con precisión, debes utilizar un valor de tolerancia. En lugar de verificar la igualdad exacta, verifica si la diferencia absoluta entre los dos números es menor que un pequeño valor de tolerancia.
Modifica tu archivo float_representation.py
para incluir una tolerancia:
## Create a floating-point number
x = 0.1 + 0.2
## Define a tolerance value
tolerance = 1e-9 ## A small value like 0.000000001
## Check if x is approximately equal to 0.3
if abs(x - 0.3) < tolerance:
print("x is approximately equal to 0.3")
else:
print("x is not approximately equal to 0.3")
Guarda el archivo y ejecútalo una vez más:
python float_representation.py
Ahora, deberías ver la siguiente salida:
x is approximately equal to 0.3
Al utilizar una tolerancia, puedes comparar con precisión los números de punto flotante a pesar de la imprecisión inherente en su representación. Este es un concepto crucial para entender cuando se trabaja con números de punto flotante en Python y otros lenguajes de programación.