VÉRIFIER QU'UNE VARIABLE EST UN NOMBRE ENTIER.

Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 - 16 mars 2005 à 23:31
egaille Messages postés 2 Date d'inscription mardi 10 juillet 2012 Statut Membre Dernière intervention 10 juillet 2012 - 7 nov. 2010 à 16:56
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/30150-verifier-qu-une-variable-est-un-nombre-entier

egaille Messages postés 2 Date d'inscription mardi 10 juillet 2012 Statut Membre Dernière intervention 10 juillet 2012
7 nov. 2010 à 16:56
Il y a bien plus simple, comme le suggérait GILDIS:

if (parseInt(nombre) == nombre){alert("entier");}

c'est tout.
karasnake Messages postés 27 Date d'inscription dimanche 12 novembre 2006 Statut Membre Dernière intervention 16 juin 2009
20 mai 2008 à 17:27
bon code simple efficace
stfou Messages postés 450 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 18 avril 2007 3
9 avril 2007 à 18:50
GILDIS >> Comment comptes-tu utiliser parseInt() ?
stfou Messages postés 450 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 18 avril 2007 3
9 avril 2007 à 18:49
Mais bon, c'est plus simple avec une RegExp. Au passage, tu peux encore alleger ton code :

var isEntier=function(variable){return new RegExp("^[0-9]+$","g").test(x)};
donnera :
if(isEntier(mavariable)){alert("entier")}else{alert("pas entier")};
stfou Messages postés 450 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 18 avril 2007 3
9 avril 2007 à 18:46
Essaie mon code :

document.write(variable + !isNaN(Number(variable)) && Math.round(variable)==variable ? " : Cette variable est un nombre entier." : " : Cette variable n'est pas un nombre entier";

Number : Convertit "variable" en un nombre ("15692" >> 15692) ou renvoi NaN ("coucou" >> NaN)
isNaN : Vérifie si la variable est bien un nombre (Not a Number) revoie false si oui et true sinon.
Math.round(variable)==variable : arrondi la variable et verifie si elle est égale :
(15.692 >arrondi> 15 // 15!=15.692)
(8 >arrondi> 8 // 8=8)
gilids Messages postés 7 Date d'inscription jeudi 11 décembre 2003 Statut Membre Dernière intervention 19 avril 2006
22 mars 2005 à 11:42
Et pourquoi pas parseInt() ?
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
19 mars 2005 à 09:12
moi ça m'a servi pour parser du html, pour vérifier des mots de passes, des mails, des urls...
tucsoufle Messages postés 1250 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 30 septembre 2007 1
19 mars 2005 à 01:13
je confirme, j'y ai passer un bon petit moment tout a l'heure rien que pour comprendre comment on met plusieurs expressions en meme temps !
Et au bout de ce temps et de quelques essais, je me dit que ça marche, que mon code est bon... et ben non
y a coucou747 qui me dit.. NON lol

Donc je m'y suis remis encore une fois !
Par contre, même si c'est compliqué à comprendre, les reg exp peuvent être vraiment interessantes à utiliser pour clarifier le code quand on connait bien le concept.

En tout cas, une chose est sur, je vais approfondir la chose encore plus dans les jours qui suivent...
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
19 mars 2005 à 00:58
les exp reg c'est vraiment compliqué, pour ma première, j'y ai passé plus d'une dizaine d'heures... dont 6 à lire de la doc...
tucsoufle Messages postés 1250 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 30 septembre 2007 1
19 mars 2005 à 00:50
ouais, effectivement mais j'ai enlevé le point pour que ce ne soit que des entiers !!!
merci bien
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
18 mars 2005 à 22:24
domage...
c'est toujours pas ça...
je te donnes une exp reg, tu mpe dis ce que tu en penses :
^[0-9.]+$
ça m'a l'air un peu plus corect...
tucsoufle Messages postés 1250 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 30 septembre 2007 1
18 mars 2005 à 22:08
re
effectivement, j'avoue que je ne connaissait pas bien les possibilités de RegExp donc voila, je m'y suis mis !!!

je pense que cette fois c'est bon !
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
18 mars 2005 à 17:38
NON !!!

ta reg exp pouvait le faire elle même...
tucsoufle Messages postés 1250 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 30 septembre 2007 1
17 mars 2005 à 20:53
oui, je n'y avait pas pensé, je modifie ça tout de suite.
une petite condition en plus :=)
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
17 mars 2005 à 20:03
et si ta variable est nulle... c'est considéré ici comme un nombre, alors qu'un nombre null c'est 0...
tucsoufle Messages postés 1250 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 30 septembre 2007 1
17 mars 2005 à 01:28
non, je suis désolé !
la fonction isFinite() verifie qu'une valeur, qu'un nombre peut etre traité par Javascript mais si ce nombre ne peut être traiter par Javascript, elle va renvoyer FALSE.
Dans mon cas, non.

De plus, ma fonction (peut etre que j'aurai du être plus explicite dans mon explication) renvoi FALSE si un caractére autre qu'un numérique est trouvé dans la variable.
on peut prendre en exemple un nombre décimale : 20.05
isFinite te renverra TRUE
ma fonction te renverra FALSE car elle va trouver un point

Voila la différence !
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
16 mars 2005 à 23:31
Plus simple, t'as juste a utilisé la fonction isFinite(variable) au lieu de ton code . Si la variable est numérique il retourne true sinon false.Tu pourais alors, faire ton code comme ceci :

if(isFinite(la_variable))
{
document.write(la_variable+' : Cette variable est numérique.
');
}
else
{
document.write(la_variable+' : Cette variable n\'est pas un numérique.
');
}
Rejoignez-nous