none
C#: Mit string.Format einen Geldbetrag + Währung angeben

    Frage

  • Moin zusammen,

    zuerst hoffe ich mal, dass ich im richtigen Forum bin. Nun mein Problem:

    string myString = string.Format("{0:C}", 123.45);

    Console.WriteLine(myString);
    Console.ReadLine();


    Wenn ich das richtig verstanden habe, müsste bei "{0:C}" das ":C", für currency, dafür stehen, dass die regionale Währung verwendet wird. Dann sollte in der Konsole folgendes erscheinen:

    123,45 €

    Bei mir erscheint allerdings:

    123,45 ?

    Ich denke, dass meine Region oder so einfach nicht definiert ist? Tut mir Leid, dass ich absoluter Newcomer in C# bin, deswegen bin ich ziemlich ratlos, und im Internet findest man mit den Suchbegriffen zu viel, was man nicht finden möchte.

    Den Kurs mach ich bei Microsoft Virtual Academy "C# Fundamentals for Absolute Beginners".

    Danke im Voraus!

    Freitag, 12. Januar 2018 13:20

Antworten

Alle Antworten

  • Hi,
    die Console kann mit dem Unicode € nichts anfangen. Das Zeichen ist nicht darstellbar, da nur ASCII-Zeichen angezeigt werden. Nutze mal ein Debug.Printe oder in einer Windows Anwendung ein Label oder TextBox und es wird richtig angezeigt.

    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Freitag, 12. Januar 2018 13:27
  • Hallo,

    die Konsole unterstützt ein paar Schriftarten, die wiederum für die Darstellung der Zeichen verantwortlich sind. Die Rasterschrift kennt das € nicht. Du kannst in den Eigenschaften der Konsole zu den Schriftarten Consolas oder Lucida Console wechseln. Die können das € anzeigen.

    Gruß
    Heiko

    Samstag, 13. Januar 2018 12:39
  • Der Font alleine reicht nicht, das "?" deutet bei der Umsetzung von Unicode in die Codepage der Console bereits auf ein Konvertierproblem. Da hilft auch kein anderer Font, da das "?" als x'3F' erstellt wird.
    Da die CMD-Box kein Unicode unterstützt muss hierzu wiederum nur die korrekte Codepage gewählt werden.

    Der Standard ist i.d.R. die Codepage 850 (OEM).
    Per "chcp 1252' sollte das €-Zeichen auch in der Console anzeigbar sein.


    Sonntag, 14. Januar 2018 16:41
  • Hm... wenn ich in einer Konsole, die auf Consolas eingestellt ist, das € eintippe, ist das auch sichtbar, trotz eingestellter Codepage 850.

    Wenn ich mit Rasterschrift das € eintippe und anschließend auf Consolas umstelle, wird sogar nachträglich das ? in ein € umgewandelt.

    Gruß
    Heiko

    Sonntag, 14. Januar 2018 18:58