Il faut considérer que l'égalité parfaite n'existe pas sur les nombres réels en informatique.
Les tests ci-dessous ne marchent ni avec A=2.0000000001 ni avec A=1.9999999999
- Code: Select all
if fPart(A) = 0
if int(A) = A
if ent(A) = A
Il faut procéder par inégalité
mais le test ci-dessous ne marche avec A=1.9999999999
- Code: Select all
if fPart(A) < 1E-8
Ce test là marche toujours :
- Code: Select all
if abs ( A-round(A,0) ) < 1E-8
Je préfère ce test, équivalent et plus rapide :
- Code: Select all
if fPart(A+1E-8) < 2E-8
En python :
- Code: Select all
if (A+1E-8)%1 < 2E-8 :
Le seuil d'égalité 1E-8 peut être revu à la hausse pour les grands nombres.