2011-08-13 8 views
1

Je dois additionner plusieurs valeurs en javascript. J'ai essayé en utilisant le code suivantJavascript Sum Values ​​

var a = 2; 
var b = 5; 
c = a+b; 

Mais, au lieu de calculer les valeurs de a et b, la sortie (c) ne combiner que ces deux valeurs. Donc, la sortie donnée est:

c = 25 

Je crois que vous pouvez m'aider facilement à ce sujet. Thx avant. Regarde Andha.

+3

Testez votre code avant de poster ici. Cette version fonctionne réellement: P – hugomg

+1

Ne pas oublier de spécifier la base en utilisant parseInt, parseInt (a, 10) – sciritai

+0

@sciritai - en effet! – JAAulde

Répondre

7

Votre code ajoute des chaînes (concaténantes). Etes-vous sûr que le code que vous avez posté représente votre problème? Ce que vous avez écrit devrait fonctionner. Assurez-vous dans le code réel, vous n'êtes pas en disant:

var a = '2'; // or something similar 

Ou si les valeurs sont analysées de quelque part, assurez-vous d'appeler parseInt(a, 10) sur eux avant de faire l'addition, 10 étant le radix.

Ou comme indiqué dans les commentaires la fonction Number serait probablement adaptée à vos besoins.

+0

ouais. Je n'utilise pas de guillemets pour les valeurs. Je les ai déjà convertis en int en utilisant parseInt (a) et parseInt (b). est-ce que je le fais bien? – Andha

+3

bien cela dépend. 'parseInt (a)' ne change pas la variable 'a', il retourne l'entier analysé. Donc, vous pourriez avoir besoin de 'a = parseInt (a)' ou 'c = parseInt (a) + parseInt (b)' – numbers1311407

+1

Assurez-vous d'utiliser le paramètre 'radix' dans les appels à' parseInt() '. – JAAulde

2

Cela fonctionne très bien:

var a = 2; 
var b = 5; 
var c = a + b; // c is now 7 
5

Assurez-vous que les valeurs sont des nombres, sinon ils vont concaténer au lieu de Suming.

a = parseInt(a, 10); // a is now int 
+0

thx pour ce frère. ça fonctionne maintenant. – Andha

+2

Veillez à utiliser le paramètre 'radix' dans les appels à' parseInt() '. – JAAulde

+0

Bon point. Mise à jour – kjetilh

1

Le code que vous affichez ne fonctionnera pas comme vous le décrivez. Il en résultera 7.

Toutefois, lorsque vous tentez d'effectuer une addition, si l'une ou les deux valeurs numériques sont réellement des chaînes numériques, les autres valeurs seront converties en chaînes et elles seront concaténées.

Cela est plus susceptible de se produire lorsque vous tentez de lire des valeurs de formulaire, de lire des cookies ou un autre type d'en-tête HTTP. Pour convertir une chaîne en nombre, vous devez utiliser parseInt() [docs]. Lisez les documents à ce sujet et assurez-vous de faire attention, et de fournir, le deuxième paramètre (radix) pour vous assurer que la conversion de chaîne en nombre utilise la base que vous attendez. (Le manque d'informations sur radix dans d'autres réponses est la principale raison je suis allé de l'avant et posté une réponse même si d'autres avaient déjà mentionné parseInt().)

De plus, Pour votre information, une autre fonction très pratique à utiliser pour traiter des valeurs inconnues et espérant effectuer des opérations mathématiques est isNaN() [docs].

+1

quelle info, tant pour cela. très utile. – Andha

+0

http://www.javascripttoolbox.com/bestpractices/#onclick indique que vous pouvez faire: X = (+ "2") + (+ "b5") - que je trouve interressant :) – Mike

3

L'auteur a probablement mis du code "simplifié" afin que nous puissions avoir une idée. Avait le même problème, tout en obtenant des valeurs d'entrée. JS l'a interprété comme une chaîne. L'utilisation de "Number()" résolu le problème:

var sum = Number(document.getElementById("b4_f2_"+i).value) + Number(document.getElementById("b4_f3_"+i).value) + Number(document.getElementById("b4_f4_"+i).value); 
-2

Utilisation parseInt():

var a=2; 
var b=5; 
c=parseInt(a)+parseInt(b);