Normierte Zahlenanzeige

  • Nachdem ich jetzt länger in der Hilfe und im Forum gesucht habe mit sicher falschen Suchbegriffen möchte ich abkürzen:


    Wie kann ich in AutoIt Zahlen mit Punkten und ggf. Kommas "schön" darstellen: 1234567,89 => 1.234.567,89 ?


    Geht sicher mit RegEx, aber vermutlich hat auch AutoIt eine fertige Funktion dafür!?

  • Wirf mal einen Blick auf StringFormat :)

  • Wirf mal einen Blick auf StringFormat :)

    Ich bin zwar schon fast im Bett, denke aber, dass man das mit einem StringFormat ggf. nicht gelöst bekommt :/. HansJ54 möchte ja auch die kontinentale Notation, also Komma als Dezimalseparator und Punkt als Tausenderseparator.


    Wie kann ich in AutoIt Zahlen mit Punkten und ggf. Kommas "schön" darstellen: 1234567,89 => 1.234.567,89 ?

    Mir würde dazu folgendes einfallen :

    AutoIt
    #include <WinAPILocale.au3>
    Local $sNumber, $sNumberNew
    
    ; Beispiel -> 1234567,89 => 1.234.567,89
    $sNumber    = '1234567,89'
    $sNumberNew = _WinAPI_GetNumberFormat(0, StringReplace($sNumber, ",", ".", -1), _WinAPI_CreateNumberFormatInfo(2, 0, 3, ',', '.', 1))
    ConsoleWrite("Nummer vorher  = " & $sNumber & @CRLF)
    ConsoleWrite("Nummer nachher = " & $sNumberNew & @CRLF)

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    • Offizieller Beitrag

    Hatte ich vor langer Zeit auch mal erstellt:

    AutoIt
    ; === Tausendergruppierung einfügen
    Func _NumberFormatThousand($vNumber, $ret='DE') ; bis 18 Vorkommastellen
        Local $sOut = '', $a = StringRegExp(StringReplace($vNumber, '.', ','), "(-?\d{1,3})(\d{3})?(\d{3})?(\d{3})?(\d{3})?(\d{3})?(?:\Z|(,\d+))", 3)
        For $i = 0 To UBound($a) -1
            If $a[$i] <> '' Then $sOut &= '.' & $a[$i]
        Next
        If $ret <> 'DE' Then Return StringTrimLeft(StringReplace(StringReplace($sOut, '.', ','), ',,', '.'), 1)
        Return StringTrimLeft(StringReplace($sOut, '.,', ','), 1)
    EndFunc  ;==>_NumberFormatThousand
  • BugFix : Schöne Umsetzung :thumbup:.


    Nur eine Kleinigkeit, die HansJ54 bei Bedarf aber auch selbst hinzufügen kann :

    Wird eine Zahl bzw. ein 'nummerischer String' ohne Nachkommstellen angegeben, dann wird kein ,00 angefügt.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."