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! 🙂


Anmelden zum Antworten