Python - Problemas con valores float sencillos

 
Vista:
Imágen de perfil de Luis
Val: 9
Ha disminuido su posición en 8 puestos en Python (en relación al último mes)
Gráfica de Python

Problemas con valores float sencillos

Publicado por Luis (15 intervenciones) el 12/10/2021 16:42:39
Tenemos estos tres valores:
x = 7.68
y = 7.775
z = 7.87

Ocurre que y-x = z-y = 0.095, pero Python se empeña en asignar los siguientes valores:

y-x = 0.09500000000000064
z-y = 0.09499999999999975

Es una diferencia insignificante, pero suficiente para devolver resultados erróneos, por ejemplo:

y-x == z-y devuelve False, lo cual no es cierto, la comparación debería devolver True (0.095 == 0.095)
El caso es que ese tipo de resultados me está tirando una rutina de comparación y la función me devuelve resultados erróneos por ello.

¿Cómo podría evitar esto, a ser posible sin utiizar módulos "externos" typo sympy?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de 7aamin
Val: 11
Ha disminuido su posición en 6 puestos en Python (en relación al último mes)
Gráfica de Python

Problemas con valores float sencillos

Publicado por 7aamin (117 intervenciones) el 12/10/2021 17:59:20
Usando round()

1
2
3
4
5
x = 7.68
y = 7.775
z = 7.87
print(round(y - x, 3), round(z - y, 3))
#0.095 0.095
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Luis
Val: 9
Ha disminuido su posición en 8 puestos en Python (en relación al último mes)
Gráfica de Python

Problemas con valores float sencillos

Publicado por Luis (15 intervenciones) el 12/10/2021 20:42:11
Gracias, justo he llegado a esa misma solución que me sugieres.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar