Page 1 of 1

comment verifier qu'un nombre est entier ?

Unread postPosted: 13 May 2011, 16:52
by Andrei210
Bonjour à tous, comme dis dans le titre j'aimerais savoir s'il est possible de verifier qu'une valeur soit entiere.
(en l'occurence c'est plus preisement une variable divisée par une autre )

Re: comment verifier qu'un nombre est entier ?

Unread postPosted: 13 May 2011, 17:06
by critor
Le test le plus précis
(au sens d'une calculatrice)
, c'est de vérifier si la partie décimale est nulle.

Code: Select all
fPart(A)=0



Tu peux aussi tester si le nombre est égal à sa partie entière. Mais dans ce cas, la calculatrice peut répondre que c'est vrai alors que les nombres sont différents mais proches.

Selon le contexte du programme, cela peut être une force ou une faiblesse.

Code: Select all
int(A)=A

Re: comment verifier qu'un nombre est entier ?

Unread postPosted: 13 May 2011, 17:51
by Andrei210
merci ça me sera très utile ici. je choisirai surement la 1ere solution même si mes chifres ne devraient normalement pas avoir plus de 2 chiffres après la virgule.

Re: comment verifier qu'un nombre est entier ?

Unread postPosted: 22 May 2011, 17:46
by AAymeric
Ou sinon, on a If A=ent(A)

Re: comment verifier qu'un nombre est entier ?

Unread postPosted: 07 Oct 2018, 22:16
by chess
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.