2016-04-22 13 views
1

I 2 Strings haben, die eine 0 und 16,63 haben wie folgt:Summe von Schwimmern gibt keine Dezimalzahlen in Javascript

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

Wenn ich einen Alarm setzen, um seinen Wert mit zwei Dezimalstellen sehe ich erhalten:

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

Aber wenn ich sie tatsächlich summieren und dann den Wert bekommen, erhalte ich:

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

ich den Fehler nicht sehen kann und warum ich das n bin Erhalt Umbra ...

bearbeiten por möglich Duplikat:

Ich sage nicht, dass die Dezimalstellen falsch sind, wie auf diese Antwort, sagte (die so viele Dezimalstellen, warum es fragt aber, warum ich den Erhalt bin überhaupt keine Dezimalstellen.

+0

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

+0

@RajaprabhuAravindasamy, Sie lesen es falsch ... – Rayon

+0

@RayonDabre Ich verstehe nicht, warum es aber geschieht mit mir (ich arbeite in ASP.net) Es soll eindeutig funktionieren. –

Antwort

3

Es gibt ein Komma statt Dezimalpunkt in

var estalviPotencia = "16,63"; 

so ist es nur die numerischen Zeichen bis zum nicht-numerischen Zeichen zu lesen.

ändern Sie es in einen Dezimalpunkt und es wird richtig funktionieren.

+0

Das ist in der Tat die Lösung. Gibt es eine Möglichkeit, mit den Kommas zu arbeiten? weil ich sehe, muss ich eine Menge von .replace (',', '.') überallhin setzen .... –

+1

Leider ist str.replace der Weg zu gehen - wahrscheinlich am besten, um eine Funktion zu schreiben, mit der umzugehen replace - parse - convertToFixed Methode, dann müssen Sie nicht jedes Mal neu schreiben –