math.isclose(a, b, *, rel_tol = 1e-09, abs_tol = 0.0)
La función math.isclose devuelve el booleano True si los dos números indicados como argumentos están suficientemente próximos, o False en caso contrario. El concepto de "proximidad" viene dado por los parámetros rel_tol y abs_tol.
- a, b: Números a comparar
- rel_tol: Tolerancia relativa. Es la máxima diferencia relativa entre ambos números para que la función devuelva True. Esta diferencia se expresa como fracción de la diferencia con respecto al máximo número. Por defecto es 1e-9.
- abs_tol: Tolerancia absoluta. Es la máxima diferencia entre ambos números en valor absoluto. Por defecto toma el valor 0.
El resultado devuelto por la función math.isclose es un booleano.
Los números 4 y 4.1 se diferencian en 0.1. Esto supone que si establecemos la tolerancia máxima absoluta en 0, lógicamente no serán considerados "suficientemente próximos":
math.isclose(4, 4.1, abs_tol = 0)
False
Si fijamos dicha tolerancia en 0.0999999, todavía seguirían sin ser próximos:
math.isclose(4, 4.1, abs_tol = 0.09999)
False
Sin embargo, si la tolerancia se fija en 0.1 (o en un valor superior), la función ya devolvería el valor True:
math.isclose(4, 4.1, abs_tol = 0.1)
True
Siguiendo con los mismos números, su diferencia relativa (con respecto al mayor de ellos) es:
rel = (4.1 - 4) / 4.1
rel
0.02439024390243894
...es decir, un 2.4% (grosso modo).
Si fijamos la tolerancia relativa en, por ejemplo, 0.24, la función no consideraría a ambos números suficientemente próximos:
math.isclose(4, 4.1, rel_tol = 0.024)
False
Sin embargo, si fijamos la tolerancia relativa en 0.25, ahora la función ya devolvería el valor True:
math.isclose(4, 4.1, rel_tol = 0.025)
True