198 votes

Comment additionner deux chaînes de caractères comme s'il s'agissait de nombres ?

J'ai deux chaînes de caractères qui ne contiennent que des chiffres :

var num1 = '20',
    num2 = '30.5';

Je me serais attendu à ce que je puisse les additionner, mais ils sont concaténés à la place :

num1 + num2; // = '2030.5'

Comment puis-je forcer ces chaînes à être traitées comme des nombres ?

440voto

ChaosPandion Points 37025

J'utiliserais d'abord l'opérateur unaire plus pour les convertir en chiffres.

+num1 + +num2;

23voto

mrtsherman Points 19573

Documentation MDN pour parseInt
Documentation MDN pour parseFloat

Dans parseInt le radix est spécifié comme dix pour que nous soyons en base 10. En javascript non strict, un nombre précédé de 0 est traité en octal. Cela poserait évidemment des problèmes !

parseInt(num1, 10) + parseInt(num2, 10) //base10
parseFloat(num1) + parseFloat(num2)

Voir aussi la réponse de ChaosPandion pour un raccourci utile utilisant un opérateur unaire . J'ai mis en place un fiddle pour montrer les différents comportements.

http://jsfiddle.net/EtX6G/

var ten = '10';
var zero_ten = '010';
var one = '1';
var body = document.getElementsByTagName('body')[0];

Append(parseInt(ten) + parseInt(one));
Append(parseInt(zero_ten) + parseInt(one));
Append(+ten + +one);
Append(+zero_ten + +one);

function Append(text) {
    body.appendChild(document.createTextNode(text));
    body.appendChild(document.createElement('br'));
}

17voto

Luca Borrione Points 3038

Je vous recommande d'utiliser l'opérateur unaire plus, pour forcer une éventuelle chaîne de caractères à être traitée comme un nombre, entre parenthèses pour rendre le code plus lisible comme le suivant :

(+varname)

Donc, dans votre cas, c'est :

var num1 = '20',
    num2 = '30.5';

var sum = (+num1) + (+num2);

// Just to test it
console.log( sum ); // 50.5

14voto

undefined Points 945
var result = Number(num1) + Number(num2);

6voto

Gurwinder Singh Points 46

Vous pouvez l'utiliser pour additionner des chiffres :

var x = +num1 + +num2;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X