Problem beim Analysieren von Währungstext in Dezimalzahl

Problem beim Analysieren von Währungstext in Dezimalzahl

Wie wäre es mit:

decimal d = decimal.Parse("$45.00", NumberStyles.Currency);

Die MSDN-Dokumentation zu Decimal.Parse besagt:


So funktioniert es bei mir:

NumberFormatInfo MyNFI = new NumberFormatInfo();
MyNFI.NegativeSign = "-";
MyNFI.CurrencyDecimalSeparator = ".";
MyNFI.CurrencyGroupSeparator = ",";
MyNFI.CurrencySymbol = "$";

decimal d = decimal.Parse("$45.00", NumberStyles.Currency, MyNFI);

1.) Sie müssen das Währungstrennzeichen anstelle des Zahlentrennzeichens definieren.2.) Da Sie nur die Währungswerte definiert haben, müssen Sie beim Parsen die NumberStyles.Currency definieren.


Als ich versuchte, den Code von @JohnKoerner auszuführen, schlug dies mit der Ausnahme fehl:System.FormatException , mit der Nachricht:"Input string was not in a correct format." . Die Antwort von @MEN war hilfreich, aber ich wollte einige zusätzliche Einblicke in die akzeptierte Antwort und die Lösung dieses Problems geben.

Ähnlich wie bei @MEN musste ich NumberFormatInfo einfügen vor dem .Parse() Methode funktionierte einwandfrei. Geben Sie jedoch die Dezimalstelle mit CurrencyDecimalSeparator an war bei mir nicht nötig. Sie müssen alle Eigenschaften angeben, die Sie für Ihre Nummern benötigen. Hier ist eine Liste in der Klassendefinitionsdokumentation:

MSDN Docs – NumberFormatInfo-Klasse

Ich werde in meiner Implementierung niemals negative Zahlen erhalten, also habe ich mich entschieden, das nicht einzubeziehen. Folgendes habe ich:

string currencyAmount = "$45.00";

NumberFormatInfo FormatInfo = new NumberFormatInfo();
FormatInfo.CurrencyGroupSeparator = ",";
FormatInfo.CurrencySymbol = "$";

// Result: 45.00
decimal parsedCurrency = decimal.Parse(currencyAmount, NumberStyles.Currency, FormatInfo);