2017-09-27 4 views
0

J'ai un problème avec le calcul d'une somme en tapuscrit où j'ai 2 nombres concaténés au lieu de tous les additionner. Je l'ai regardé cette question et nous avons vu plusieurs sujets couvrant ce problème où la solution était habituellement comme ceci:Séquences matricielles à la place de la concaténation

« utiliser ParseInt() ou ParseFloat() pour convertir vos chaînes en nombres entiers »

Le problème est que je ne avoir des chaînes et même si j'utilise des numéros qu'ils concaténent encore.

Mon code est le suivant:

 updateSummaryAmount(index: number){ 
     let summary = 0; 

     this.listOfPeriods[index].declarations.forEach(element => { 
      summary = summary + element.amount; 
     }); 

     this.listOfPeriods[index].summary = summary; 
    } 

Si je résume

0,55 

Et

0,45 

Je reçois

00,550,45 

Lorsque je tente d'utiliser parseInt() ou parseFloat (0 je reçois l'erreur tapuscrit suivante:

[ts} Argument of type 'number' is not assignable to parameter of type 'string'. 

J'ai essayé de résumer avec Math.floor(), juste pour tester, et cela fonctionne, mais me donne évidemment parqueté des numéros que Je ne veux pas.

Comment puis-je additionner 2 valeurs dans mon cas?

+1

qu'est-ce que 'console.log (typeof element.amount)' vous donner si vous le mettez dans la boucle foreach? – simne7

+1

Désolé de répéter l'évidence, mais si ce que vous dites est vrai, vous avez affaire à des cordes. Veuillez fournir un [mcve] pour illustrer le problème et inclure un exemple de ce qui se trouve dans 'this.listOfPeriods [index] .declarations'. Vous pouvez 'consol.log 'il inclure le résultat dans votre question – Jamiec

+1

et dites-nous quel argument vous donnez sur parseFloat() (parseInt() n'est pas adapté ici) – Pac0

Répondre

3

essayer ci-dessous pour forcer le changement au numéro element.amount

this.listOfPeriods[index].declarations.forEach(element => { 
    summary = summary + (+element.amount); 
}); 
+0

Semble "travailler", le seul problème avec ceci est qu'une addition de 1,25 et 0,25 donne 1,5 au lieu de 1,50. Une idée? –

+5

@NiekJonkman '1.5' * est *' 1.50'. Vous demandez comment formater un nombre pour l'affichage qui est une question différente (déjà répondu sur SO de manière répétée) – Jamiec