2012-05-30 5 views
2

J'essaye d'additionner des nombres décimaux ensemble mais quand j'alerte la variable finalnumber j'obtiens zéro. La variable number est un nombre décimal. Comment puis-je résoudre ceci pour que la variable finalnumber soit la somme de tous les number?jquery ajouter des nombres décimaux

var finalnumber = 0; 

$('#chosen-keyword-container').find('.keyword-row').each(function() { 
    var number = $(this).find('td:last').find('input[name=bid-price[]]').val(); 

    var finalnumber = parseInt(number) + parseInt(finalnumber); 

});​ 
+0

Je ne sais pas si cela est votre problème, mais vous pouvez parseFloat si vous regardez les nombres décimaux. – lucuma

+0

Qu'est-ce qui se trouve exactement dans les champs de saisie? As-tu essayé '.' et ',' ainsi que le séparateur décimal? – papaiatis

Répondre

8

Modifier ceci:

var finalnumber = parseInt(number)+parseInt(finalnumber); 

à ceci:

finalnumber = finalnumber + parseFloat(number); 

Ou:

finalnumber += parseFloat(number); 
  • parseIntne peut pas contenir des valeurs décimales. utilisez parseFloat à la place.
  • Ne pas déclarer finalnumber avec var, car il cache le finalnumber dans la portée extérieure.
1

Juste le mot-clé drop var dans votre fonction devant finalnumber. Avec ce var vous définissez une nouvelle variable sous ce nom et cette portée. Donc, fondamentalement, vous avez deux versions de finalnumber et juste ajouter à la locale (celle de la fonction et non celle globale).

D'autre part, vous devriez changer parseInt à parseFloat que vous travaillez avec des nombres décimaux (Voir la réponse de @ gdoron).

$('#chosen-keyword-container').find('.keyword-row').each(function() { 
    var number = $(this).find('td:last').find('input[name=bid-price[]]').val(); 

    finalnumber = parseFloat(number) + finalnumber; 
}); 

Sur sidenote: Vous pouvez laisser tomber le parseInt() dans la fonction pour finalnumber. Cette variable est toujours une valeur numérique et il n'est donc pas nécessaire de la convertir.

0

changement de la ligne d'addition comme suit

finalnumber = finalnumber + parseFloat(number); 
Questions connexes