Conversion de nombre Javascript parseInt

Quelle est la meilleure manière de convertir une chaîne de caractères (String) en nombre en Javascript


les méthodes les plus connues sont bien sur parseInt pour convertir en entier et parseFloat pour convertir en nombres flottants . Mais voyons quelques erreurs a ne pas faire avec ces méthodes .


alert( parseInt("30") )    // affiche 30    
alert( parseInt(30) )    // affiche 30  
alert( parseInt("030") )    // affiche 24   
alert( parseInt("00000030") )    // affiche 24 
 


C'est surprenant comme résultats !! Mais si on regarde de prés au fait la méthode parseInt prend un deuxième paramètre   qu'on oublie souvent et c est pas toujours sans conséquences

On devrait écrire plutôt ce ci :


alert( parseInt("30",10) )    // affiche 30    
alert( parseInt(30,10) )    // affiche 30  
alert( parseInt("030",10) )    // affiche 30   
alert( parseInt("00000030",10) )    // affiche 30

 alert( parseInt("30km",10) )    // affiche 30

Le deuxième paramètre spécifie la base décimale .

 Pour éviter les anomalie de parseInt le mieux serait de faire ceci :


alert( Math.floor("30") )    // affiche 30     
alert( Math.floor(30) )     // affiche 30  
alert( Math.floor ("030") )     // affiche 30    
alert( Math.floor("00000030") )     // affiche 30 


alert( Math.floor("30km") )     // affiche NaN 

Ou mieux encore


alert(Number ("30") )    // affiche 30    
alert( Number(30) )    // affiche 30   
alert( Number ("030") )    // affiche 30    
alert( Number("00000030") )    // affiche 30  

alert( Number("30km") )    // affiche NaN   

Ou  encore


alert(+"30" )    // affiche 30     
alert( +30 )    // affiche 30   
alert( + "030" )    // affiche 30   
alert(+"00000030" )    // affiche 30 

alert(+"30km" )    // affiche Nan




Ou  encore


alert("30"/1 )    // affiche 30     
alert( 30/1 )    // affiche 30   
alert(  "030" /1)    // affiche 30    
alert("00000030" /1)   // affiche 30


alert("30km" /1)   // affiche NaN



Enfin selon le cas   on choisira la méthode a utiliser  car elles ont toutes leurs avantages .




0 commentaires:

Enregistrer un commentaire