Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

curiosité de parseInt ???

7 réponses
Avatar
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)

7 réponses

Avatar
dhar
É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
Avatar
unbewusst.sein
dhar wrote:

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)
Avatar
Bol
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
Avatar
unbewusst.sein
Bol wrote:

+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)
Avatar
Pascal Poncet
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
Avatar
Olivier Miakinen
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
Avatar
unbewusst.sein
Pascal Poncet wrote:

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)