2017-07-09 6 views
0

Je souhaite effectuer l'ajout de nombres à virgule flottante. Je n'aurai toujours que 2 décimales.Résultat incorrect lors de l'ajout de parseFloat en Javascript

Cependant, si je fais:

  var num = 0; 
     num += parseFloat("2434545.64").toFixed(2); 
     num += parseFloat("454560.91").toFixed(2); 

-je obtenir la valeur 02434545.64454560.91 Il est au lieu d'ajouter AJOUT DE. L'ajout sera-t-il toujours précis?

Répondre

3

toFixed() Retourne une chaîne. Vous concaténez donc deux String.
Vous devez utiliser toFixed() que dans la dernière déclaration et vous ne devriez pas mélanger cette invocation avec un opérateur += dans une déclaration même car ici:

num += parseFloat("2434545.64").toFixed(2); 

parseFloat("2434545.64").toFixed(2) est évalué en premier.
Il produit une chaîne. Puis, son num += String result est évalué. Donc, il concaténerait un Float avec une chaîne. Ce qui produit à nouveau une concaténation de chaînes et non une opération arithmétique.

Juste invoquer toFixed() dans une déclaration distincte:

var num = 0; 
num += parseFloat("2434545.64"); 
num += parseFloat("454560.91"); 
num = num.toFixed(2);