2016-04-22 3 views
1

j'ai 2 chaînes qui ont un 0 et un 16,63 comme suit:somme des flotteurs ne donne pas de décimales en javascript

var diferencia = "0"; 
var estalviPotencia = "16,63"; 

Si je mets une alerte pour voir sa valeur avec deux décimales j'obtenir:

alert(parseFloat(diferencia).toFixed(2)) -- returns 0,00 
alert(parseFloat(estalviPotencia).toFixed(2)) -- returns 16,63 

Mais si je somme effectivement les puis obtenir la valeur je reçois:

alert((parseFloat(diferencia) + parseFloat(estalviPotencia)).toFixed(2)); -- returns 16,00 

je ne vois pas l'erreur et pourquoi je suis n que l'obtention ... umber

Modifier por double possible:

Je ne dis pas que les décimales sont fausses comme dit sur cette réponse (qui demande pourquoi il y a tant de décimales, mais pourquoi je ne suis pas l'obtention des décimales du tout.

+0

__NON __... https://jsfiddle.net/rayon_1990/t679kd1m/ – Rayon

+0

@RajaprabhuAravindasamy, vous lisez mal ... – Rayon

+0

@RayonDabre Je ne comprends pas pourquoi il me arrive bien (je travaille dans asp.net) Il est clairement supposé fonctionner. –

Répondre

3

Il y a une virgule au lieu d'une virgule dans

var estalviPotencia = "16,63"; 

il est la lecture que les caractères numériques jusqu'à le caractère non numérique. Changez-le en un point décimal et cela fonctionnera correctement.

+0

C'est en effet la solution. Y a-t-il un moyen de travailler AVEC les virgules? parce que je vois je vais devoir mettre beaucoup de .replace (',', '.') partout .... –

+1

Malheureusement str.replace est la voie à suivre - probablement le meilleur pour écrire une fonction pour gérer le replace - parse - convertToFixed, alors vous n'aurez pas à le réécrire à chaque fois –