2017-01-28 4 views
1

Ich benutze toLocaleString()https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString in ein Dollar-String-Format zu konvertieren, aber ich habe Probleme beim Umkehren der Operation. In meinem Fall zurück in Cent umwandeln.Wie konvertiert man eine Gebietsschema-Zeichenfolge (Währung) zurück in eine Zahl?

dollarString.split('$')[1] * 100 Vermischt, sobald die Zeichenfolge eine , drin hat.

Gibt es einen besseren Weg, damit umzugehen, als durch Strings Komma zu entfernen?

Was passiert, wenn ich andere Währungen verwende? Kann ich die Währung nicht in eine Cents-Darstellung umwandeln, damit ich Mathematik und dann wieder in ein Gebietsschema umwandeln kann?

+0

ersetzen die '' 'mit .' dann Verwenden' parseFloat' Verfahren, zum Beispiel 'var c = parseFloat ("10,33")' –

+0

http://stackoverflow.com/questions/25645163/how-do-i-convert-String-zu-Nummer-nach-Locale-entgegengesetzt-von-tolocalestri – Kaii

+0

können Sie auch den anderen Wert speichern? –

Antwort

2

Angenommen, Sie in einem locale sind, der einen Punkt als Dezimalzeichen verwendet, könnten Sie so etwas wie folgt verwenden:

var dollarsAsFloat = parseFloat(dollarString.replace(/[^0-9-.]/g, '')); 

Die oben verwendet einen regulären Ausdruck alles andere als Ziffern und dem Komma zu entfernen. Die parsefloat Funktion erledigt den Rest.

Seien Sie einfach vorsichtig. Einige Länder verwenden Komma und Dezimal nicht wie Sie! Es ist wahrscheinlich am besten, den Geldbetrag in einer Float-Variablen zu belassen und nur beim Drucken zu formatieren.

1

Wie von anderen vorgeschlagen, müssen Sie (,) aus der Zeichenfolge entfernen.

dollarString.split('$')[1].replace(/\,/g,'') * 100 

Im Fall hat dollarString nur Werte als $xx,xxx,xxx$xx,xxx,xxx, dann können Sie einfach alle (,) entfernen gespalten dann

dollarString.replace(/\,/g,'').split('$')[1] * 100 
1

Ex: Ich entscheide, n Stellen nach Punkt und Komma als Trennzeichen verwenden

Object.defineProperties(Number.prototype,{ 
    locale:{ 
     value:function(n){ 
      n = n||2 
      return this.toLocaleString('en', { 
         minimumFractionDigits: n, 
         maximumFractionDigits: n 
      }); 
     } 
    } 
}); 

/rückwärts von String-Nummer/

Object.defineProperties(String.prototype,{ 
    floatLocale:{ 
     value: function(){ 
      return parseFloat(this.replace(/,/g,"")); 
     } 
    } 
}); 

So v= 1000.33; v === v.locale().floatLocale();

Verwandte Themen