Comparar números flotantes puede ser engorroso por las imprecisiones que implican la representación de los números decimales. Esto debido a que este tipo de números se almacenan en la memoria del computador usando una representación binaria, complicando los resultados debido al redondeo.
#Dan diferente precisión decimal
x = 3.3print(x)
y = 1.1 + 2.2#por la referencia de memoria tiene cierta precisión decimal
print(y)#como la precisión es diferente no son exactamente iguales
print(x==y)
Por esto, se pueden trabajar dos maneras para hacer la comparación:
y_str = format(y,".2g") #Parámetros: (variable, "#decimales")
print('str ->', y_str)
print(y_str == str(x)) #Para hacer la comparación con la equis se tiene que volver str también
print("*" * 10)#Solo es una línea divisoria.
print(y, x)
#matemáticamente son iguales, entonces se puede resolver con tolerancia
tolerance = 0.00001#se saca el valor absoluto con abs() ya que se necesita que sea positivo.
print(abs(x-y)<tolerance)