Währung in double
-
Hallo
Ich stehe grad auf dem Schlauch
Zunächst habe ich die double Werte aus der DB für die schönere Darstellung ins Währungsformat formatiert
String.Format("{0:C2}", (double)item.Preis),
Wenn ich die Werte nun ändern und anschließend wieder speichern möchte, kommt eine Fehlermeldung falsches Format - vermutlich wegen des € Zeichens.
Nun meine Frage, wie kann ich das Währungsformat wieder zrück in ein einfachs double konvertieren??
String.Format("{0:N}" ...
funktioniert leider nicht
-
Mal abgesehen davon, dass du tatsächlich decimal anstatt double für Geldbeträge verwenden solltest, kannst du mittels der decimal.Parse-Methode wieder den Betrag aus dem String rausholen. Beim Aufruf musst du jedoch NumberStyles.Currency angeben, damit klar ist, dass es sich um 'ne Währung handelt.
Decimal: https://msdn.microsoft.com/en-us/library/364x0z75.aspx
Parse: https://msdn.microsoft.com/en-us/library/91fwbcsb.aspx
-
Btw:
Geld als Double zu speichern ist wegen der Rundungsfehler ziemlich ungünstig. Nimm besser Long und speichere den Betrag in Cent. Wenn das nicht reicht, bemüh eine BigInteger-Klasse. Aber lass die Finger besser vom Fließkommazeug.
-
Leider ist das der Vergangenheit geschuldet, dass die Felder als double und nicht decimal angelegt wurden.
Hab die Lösung nun:
string preis = dataGridView1["Preis", i].Value.toString(); double bereinigt = Double.Parse(preis, NumberStyles.Currency);
Danke!