math.isclose() în Python

Verifică dacă două numere zecimale sunt „suficient de apropiate” pentru a fi considerate egale.

Sintaxă
math.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0)

Ce face math.isclose()

Din cauza preciziei limitate, 0.1 + 0.2 == 0.3 este fals. isclose(a, b) consideră numerele egale dacă diferența lor este mică în raport cu mărimea lor (rel_tol, implicit o miliardime) sau sub o toleranță absolută (abs_tol).

Când compari cu 0, toleranța relativă nu ajută (orice procent din 0 este 0), deci dă un abs_tol.

Parametri

Parametru Descriere
a, b Numerele comparate.
rel_tol Toleranța relativă.
abs_tol Toleranța absolută.

Ce returnează

True sau False.

Exemple

Exemplul 1: Comparații sigure

import math
print(0.1 + 0.2 == 0.3, math.isclose(0.1 + 0.2, 0.3))
print(math.isclose(100, 101, rel_tol=0.02))
print(math.isclose(1e-12, 0), math.isclose(1e-12, 0, abs_tol=1e-9))

Rezultat

False True
True
False True

Greșeli frecvente

  • Compari cu zero fără abs_tol și primești mereu False.

Comenzi înrudite

  • float(): Tipul numerelor cu zecimale; float() transformă un text sau un întreg în număr zecimal.
  • round(): Rotunjește un număr la cel mai apropiat întreg sau la un număr de zecimale.
  • math.isnan(), isinf() și isfinite(): Verifică dacă un număr este NaN, infinit sau un număr finit obișnuit.