¿Estás comparando números decimales y el resultado no es lo que esperabas?
#Comparar datos tipo floata = 6.3b = 3.1 + 3.2print(a)print(b)print(a == b)
Resultado:
6.3
6.300000000000001
False
Esto sucede porque la precisión decimal no es la misma entre los números comparados, en este caso tienes dos opciones para hacer la comparación:
a) Convirtiendo los números a texto con la misma cantidad de decimales
#Convertir ambos valores a cadena de texto (string)
a_str = format(a, '.2g')
b_str = format(b, '.2g')
print("a formato texto:", a_str)print("b formato texto:", b_str)print('Resultado comparación formato texto:', a_str == b_str)
Resultado:
a formato texto: 6.3
b formato texto: 6.3
Resultado comparación formato texto: True
b) Validando que la diferencia entre ambos valores sea menor a un error tolerable
#Se define una tolerancia máxima de la diferencia entre los valores a comparar
tolerancia = 0.00001#La resta se hace con valor absoluto (siempre un valor positivo)
print("Tolerancia:", format(tolerancia, 'f'))
print("Resultado abs(a - b):", format(abs(a - b), '.15f'))
print("Resultado comparación usando tolerancia:", abs(a - b) < tolerancia)
Resultado:
Tolerancia: 0.000010
Resultado abs(a - b): 0.000000000000001
Resultado comparación usando tolerancia: True
Espero que te haya sido útil, hasta pronto!