Zahl (Int, Float) in Tausendergruppierung ausgeben, Währungsformatierung

  • In der SB war die Frage, wie man eine Zahl mit den Tausenderpunkten ausgeben kann.
    Hier mal eine Lösung dazu.
    Eingabe:
    - als nummerischer Wert (Komma als Punkt)
    - als String (Komma als Zeichen)
    Ausgabe:
    - Tausendertrenner "." - Dezimaltrenner "," (Standard)
    - Tausendertrenner "," - Dezimaltrenner "." (zweiten Parameter übergeben <> "DE")
    Limitiert auf 18 Vorkommastellen - sollte aber wohl reichen. Wer mehr braucht: im Pattern weitere Dreierblocks ( "(\d{3})?" ) einfügen.
    Man könnte das Pattern auch dynamisch über die Stringlänge anpassen. Aber ich denke so reicht es auch. ;)



    Edit: Vielleicht bekommt jemand das ja auch mit StringFormat() hin. Falls ja - würde mich mal interessieren. Die Funktion liegt mir überhaupt nicht. ;)


    Edit 26.03.2011:
    Ich habe gerade eine Funktion zur Währungsausgabe benötigt. Da diese z.T. auf der vorigen Funktion basiert, hänge ich sie mal hier mit an.
    Währungssymbol, Dezimaltrenner und Gruppenseperator werden aus den Ländereinstellungen des PC übernommen. Ihr könnt ja zum Testen mal ein anderes Länderformat aktivieren.


  • Schöne, brauchbare Funktion (ich hatte mir mal eine mühsam Stelle für Stelle gebastelt, war viel länger und nicht so sicher).
    Allerdings funktioniert sie nicht für negative Zahlen, was irgendwie schade ist...
    Aber sonst ist die richtig gut!

  • Bis vor kurzem war doch diese Funktion noch Bestandteil der UDFs:


    Die hatte ich mir vorsorglich mal archiviert, als ich gelesen habe, dass sie aus den UDFs entfernt wird.

  • sicher).
    Allerdings funktioniert sie nicht für negative Zahlen, was irgendwie schade ist...

    Das hatte ich glatt vergessen, habe die dafür notwendigen 2 Zeichen hinzugefügt. ;)


    Die hatte ich mir vorsorglich mal archiviert, als ich gelesen habe, dass sie aus den UDFs entfernt wird.

    Hatte ich auch irgendwie in Erinnerung, dass es da schon mal was gab. Habs nur nicht mehr gefunden. Da meine Variante deutlich kürzer ist, werde ich diese weiter nutzen. ;-)

  • hi,
    kannst du die funktion um ein parameter erweitern, sodass auch bei ergebnissen mit keiner nachkommastelle, dennoch 2 nachkommazahlen mitausgegeben werden?


    Zur Zeit:
    _NumberFormatThousand("300,00")
    =
    300


    Nach Änderung:
    _NumberFormatThousand("300,00")
    =
    300,00

  • kannst du die funktion um ein parameter erweitern, sodass auch bei ergebnissen mit keiner nachkommastelle, dennoch 2 nachkommazahlen mitausgegeben werden?


    Hiermit getan. Mit "-1" (Voreinstellung) für $iDecPlaces wird die tatsächliche Anzahl an Dezimalstellen verwendet. Jede andere Angabe (0, 1, 2, ...) erzwingt diese Anzahl an Nachkommastellen. Wird dabei die Ausgabe gekürzt, wird die letzte Stelle gerundet.