11547 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

j'utilise souvent la fonction parseInt dans mes codes javascripts, mais je me suis aperçu que ce code ne fonctionnait pas :
<script type="text/javascript">
<!--
var v = '08';
alert(parseInt(v));
-->
</script>



Quelqu'un peut me dire pourquoi ?
Modifié par PoichOU (26 Jun 2006 - 17:32)
Dans les langages de programmation de manière générale, on a pris l'habitude d'indiquer les nombres hexadécimaux avec un préfixe 0x et les nombres octaux avec un préfixe 0.
Un nombre commençant dont par un 0 est interprété comme étant un nombre octal, c'est-à-dire en base 8.
De 01 à 07, aucune différence n'est perçue car les 7 premiers chiffres sont les mêmes dans le système décimal et le système octal. En revanche, à partir de 8 en décimal, on compte 010, 011... en octal.

En rencontrant 08, le navigateur est face à un problème : le 0 préfixant lui indique d'une part que le nombre est écrit en base 8, et d'autre part, le chiffre 8 (et le 9 non plus d'ailleurs) n'existe pas dans cette base puisqqu'on compte 1, 2, 3, ..., 6, 7, 10, 11, .... D'où l'erreur...
ok merci de ces explications,

pour récupérer ma valeur 8 il suffit de préciser la base 10 :

<script type="text/javascript">
<!--
var v = '08';
alert(parseInt(v,10));
-->
</script>



c'est bien ça ?