curiosité de parseInt ???

Le
unbewusst.sein
je viens de découvrir que parseInt(s, 10); retourne NaN quand s = " +
3";
càd quand il y a un ou des blanc(s) entre le "+" et le premier
chiffre

--
« L'essence même du génie, c'est de mettre en pratique
les idées les plus simples. »
(Charles Peguy)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
dhar
Le #23815321
Étonnant...
La doc de Mozilla dis le contraire : https://developer.mozilla.org/en/JavaS cript/Reference/Global_Objects/parseInt
Et après un test rapide sur Firefox et Chrome, ça semble fonctionner: h ttp://jsbin.com/acobax/edit#javascript
unbewusst.sein
Le #23815421
dhar
La doc de Mozilla dis le contraire :


https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/par
seInt

c'est uniquement "Leading and trailing spaces are allowed"...

Et après un test rapide sur Firefox et Chrome, ça semble fonctionner:


http://jsbin.com/acobax/edit#javascript

euh, non, ça ne marche pas avec "+ 3" càd quand il y a une espace entre
le "+" et le "3".

--
« L'essence même du génie, c'est de mettre en pratique
les idées les plus simples. »
(Charles Peguy)
Bol
Le #23815411
je viens de découvrir que parseInt(s, 10); retourne NaN quand s = " +
3";
càd quand il y a un ou des blanc(s) entre le "+" et le premier
chiffre...



+3 ne me semble pas etre un chiffre, 3 ou -3, oui

Repondu sans testé,

A+
Bol
unbewusst.sein
Le #23815541
Bol
+3 ne me semble pas etre un chiffre, 3 ou -3, oui



avec la string "+3" c'est bon avec parseInt,
tout comme " +3" ou " +3 ",
MAIS PAS " + 3"...
--
« L'essence même du génie, c'est de mettre en pratique
les idées les plus simples. »
(Charles Peguy)
Pascal Poncet
Le #23815711
Le 03/10/2011 10:20, Une Bévue a écrit :
avec la string "+3" c'est bon avec parseInt,
tout comme " +3" ou " +3 ",
MAIS PAS " + 3"...



Rien ne dit non plus que ça DOIT fonctionner selon ce que tu attendais.

ECMAScript dit que l'analyse de la chaîne passée se fait de gauche à
droite, que les premiers espaces sont ignorés, qu'il est tenu compte du
signe + ou - si c'est le premier caractère rencontré et que l'analyse
s'arrête au premier caractère suivant qui n'est pas un chiffre de la
base spécifiée.

Dans ton cas, les espaces de début sont bien ignorés, le signe + est
mémorisé et le premier caractère suivant étant un espace, donc pas un
chiffre valide de la base décimale, il renvoie NaN.

Par contre, la chaîne " +3 euros", produira bien la valeur entière 3
après analyse, ce qui est attendu.
Tu noteras que l'analyse de "- 3 euros" produit également NaN !


--
Cordialement,
Pascal
Olivier Miakinen
Le #23815751
Bonjour,

Le 03/10/2011 11:20, Pascal Poncet répondait à Une Bévue :

avec la string "+3" c'est bon avec parseInt,
tout comme " +3" ou " +3 ",
MAIS PAS " + 3"...



Rien ne dit non plus que ça DOIT fonctionner selon ce que tu attendais.

ECMAScript dit que l'analyse de la chaîne passée se fait de gauche à
droite, que les premiers espaces sont ignorés, qu'il est tenu compte du
signe + ou - si c'est le premier caractère rencontré et que l'analyse
s'arrête au premier caractère suivant qui n'est pas un chiffre de la
base spécifiée.

Dans ton cas, les espaces de début sont bien ignorés, le signe + est
mémorisé et le premier caractère suivant étant un espace, donc pas un
chiffre valide de la base décimale, il renvoie NaN.



Voilà, exactement. Je n'aurais pas mieux dit.

Par contre, la chaîne " +3 euros", produira bien la valeur entière 3
après analyse, ce qui est attendu.
Tu noteras que l'analyse de "- 3 euros" produit également NaN !



De la même façon, la chaîne "65 536" produira 65 et non pas 65536.

Cordialement,
--
Olivier Miakinen
unbewusst.sein
Le #23816621
Pascal Poncet
Rien ne dit non plus que ça DOIT fonctionner selon ce que tu attendais.



je n'ai pas dit le contraire, hein, c'est juste une convention, il vaut
mieux le savoir, c'est tout.

--
« L'essence même du génie, c'est de mettre en pratique
les idées les plus simples. »
(Charles Peguy)
Publicité
Poster une réponse
Anonyme