Bonjour les amis.
J'ai decouvert un petit astuce permettant de convertir des chaines en des nombres, j'aimerais vous la presenter.

Normallement, lorsque vous voulez faire cette conversion, vous utilisez deux fonctions, soit parseInt(pour convertir en nombre entier) ou parseFloat(pour les flottants).

Eh bien, il est facile de ce passer de ces deux fonctions en utlisant tout simplement l'operateur +Unaire.

Par ex:

//J'ai deux variables (nb1 et nb2) contenant des chaines

var nb1 = "11";
var nb2 = "22";

Normalement, si je fais un alert en addition ces deux variables, le resultat sera une concatenation du contenue des deux puisque ce sont des chaines de caracteres et non des nombres.

//Un coup d'alert
alert( nb1 + nb2) //M'affiche 1122 come resultat.

Donc, pour que l'addition soit vraiment, il faut que je convertisse le contenue de ces deux variables en nombre. L'une des options est d'utiliser les deux fonctions citees ci dessus...(pareInt et paseFloat). Mais pour faire simple, on peut simplement utiliser le +unaire comme ceci:

var nb1 = +"11"; //le + converti la chaine 11 en nombre 11.
var nb2 = +"22"; //le + converti la chaine 22 en nombre 22.

//u coup d'alert de la somme des deux.
alert( nb1 + nb2 ); //m'affiche bien 33

donc les deux chaines ont ete bien convertis.
Avantage: L'operateur +unitaire prend en compte les 2 type de nombre(entier et flottant), donc on en aura pas a s'en soucier comme c'etait le cas pour parseInt et parseFloat.

Thanks.

2 réponses


Ca marche aussi avec la multiplication
Alert( 1 * nb1 + nb2 )

Edit :
Alert(1 "11" + "22") -> "1122"
car bien que 1
"11" donne un entier, celui ci est reconverti en string pour être concaténé à "22"
Alert( 1 "11" + 1 "22") -> 33
on somme bien 2 entiers

Oui, j'ai oublié de le preciser, une fois convertie en nombre, vous pouvez utliser toutes les operateurs numeriques pour faire vos calculs.