OVH Cloud OVH Cloud

parseInt() et "09"

2 réponses
Avatar
yvon.thoravallist
je viens de m'apercevoir que parseInt("09");

retourne 0 (zéro) qu'est-ce que j'ai raté ?

sur mozilla (latest) et safari.

--
Yvon Thoraval
http://OrganisationPolitique.com hébergé par :
http://ouvaton.coop/

2 réponses

Avatar
YD
Thierry Loiseau wrote:
J'avais annoncé cette "anomalie" ici même fin juillet 2000 (encore
juillet ?) alors que je commençais le développement du futur long JS
d'astrophoto (plus de 2000 lignes pour le script principal, en final).



Ce n'est pas une anomalie, voir la norme Ecma-262 :
<citation src="ECMA-262">
15.1.2.2 parseInt (string , radix)
The parseInt function produces an integer value dictated by interpretation of the contents of the string argument according to the
specified radix. Leading whitespace in the string is ignored. If radix is undefined or 0, it is assumed to be 10 except when the
number begins with the character pairs 0x or 0X, in which case a radix of 16 is assumed. Any radix-16 number may also optionally
begin with the character pairs 0x or 0X.
[...]
12. If the length of S is at least 1 and the first character of S is “0”, then at the implementation's
discretion either let R = 8 or leave R unchanged.
</citation>

En fait, je n'utilise plus parseInt() et préfère désormais l'emploi du
parseFloat() pour éviter par inadvertance les erreurs.



Il y a plus simple (dans l'écriture parce qu'au niveau interne ça doit être à peu près équivalent) l'utilisation de l'opérateur
unaire + qui convertit une valeur quelconque en nombre (ou NaN le cas échéant ;-) ).
<citation src="ECMA-262">
11.4.6 Unary + Operator
The unary + operator converts its operand to Number type.
</citation>
Il vaut mieux l'encadrer de parenthèses pour éviter des erreurs d'interprétation dans une expression ou insérer une espace avant
l'opérateur -> c=b+(+a) ou c=b+ +a. L'opérateur + convertit aussi des écritures scientifiques comme "+.1234e-3"

--
Y.D.
Avatar
thierry.loiseau
Salut Yves !

YD wrote:

> J'avais annoncé cette "anomalie" ici même fin juillet 2000 (encore
> juillet ?) alors que je commençais le développement du futur long JS
> d'astrophoto (plus de 2000 lignes pour le script principal, en final).

Ce n'est pas une anomalie, voir la norme Ecma-262 :



Yep !! Remarque les guillemets !-)
--
<http://astrophoto.free.fr> Calculatrice astronomique en
JavaScript, une carte du ciel avec la position des planètes,
animation du système solaire, et «ousqu'ilfait» jour & nuit ?