Jump to content

Zahl in Worten anzeigen


Go to solution Solved by _Moritz_,

Recommended Posts

Ich benötige eine Möglichkeit eine Zahl "in Worten" im Bericht eintragen zu können.

Im Idealfall noch folgendem Prinzip:

Eingabe: 127,34       Anzeige: Einhundertsiebenundzwanzig 34/100

 

Hat jemand eine Idee wie ich das lösen kann?

 

Vielen Dank und Liebe Grüße

  • Like 1
Link to comment
Share on other sites

Das ist machbar (man müsste vorab mal klären, wie groß die Zahl maximal werden könnte; das limitiert die Komplexität bzw. Umfang der Lösung), wird aber eine ekelhaft lange Formel (mit u.U. Auswirkungen auf die Performance der smap)… jedenfalls fällt mir nix Knackiges ein.

Anyone else?

Link to comment
Share on other sites

  • Solution

Du müsstest dir halt ein Konstrukt aufbauen, dass bei maximal 3 Stellen vor dem Komma Folgendes erfüllt:

  1. Prüfung (IF), ob die Zahl größer 99, wenn ja, dann nimm die erste Stelle und ersetze 1 mit "Eins" bis 9 mit "Neun" + der statische Text "hundert"; falls die Prüfung fehlschlägt, bleibt dieser Teil leer.
  2. Umwandlung der letzten Stelle (vor dem Komma), auch wieder 1 = "ein" bis 9 = "neun" + der statische Text "und".
  3. Umwandlung der vorletzten Stelle (die Zehnerstelle) von 1 = "zehn", via 2 = "zwanzig" bis 9 = "neunzig".

Es muss außerdem noch eine Prüfung für die Zahlen 11 ("elf") und 12 ("zwölf") stattfinden, so dass das auch mit abgedeckt ist.

Für die Entwicklung des Ganzen würde ich wahrscheinlich sogar auch erst einmal mit drei Bausteinen (Baustein-IDs "Hunderter", "Zehner" und "Einer" o.ä.) und in einem finalen Result-Feld dann alles per CONCAT() zusammenfügen.

  • Like 1
  • Agree 1
Link to comment
Share on other sites

So sieht das ChatGPT:

# Pseudocode zur Umwandlung einer Zahl in ihren deutschen Textwert

 

EINGABE: zahl

 

# Überprüfung und Verarbeitung der Hunderterstelle

IF zahl >= 100 THEN

    hunderter = zahl / 100

    hunderterText = ""

    SWITCH hunderter

        CASE 1: hunderterText = "Einhundert"

        CASE 2: hunderterText = "Zweihundert"

        CASE 3: hunderterText = "Dreihundert"

        # Füge weitere Fälle bis 9 hinzu

    END SWITCH

ELSE

    hunderterText = ""

END IF

 

# Berechnung der Zehner- und Einerstelle ohne die Hunderterstelle

rest = zahl % 100

 

# Überprüfung und Verarbeitung für spezielle Fälle 11 und 12

IF rest == 11 THEN

    restText = "elf"

ELSE IF rest == 12 THEN

    restText = "zwölf"

ELSE

    # Verarbeitung der Zehnerstelle

    zehner = rest / 10

    zehnerText = ""

    SWITCH zehner

        CASE 2: zehnerText = "zwanzig"

        CASE 3: zehnerText = "dreißig"

        # Füge weitere Fälle bis 9 hinzu

    END SWITCH

    

    # Verarbeitung der Einerstelle

    einer = rest % 10

    einerText = ""

    SWITCH einer

        CASE 1: einerText = "ein"

        CASE 2: einerText = "zwei"

        # Füge weitere Fälle bis 9 hinzu

    END SWITCH

    

    # Zusammenfügen von Zehner- und Einerstelle mit "und" falls nötig

    IF einer > 0 AND zehner > 0 THEN

        restText = einerText + "und" + zehnerText

    ELSE

        restText = einerText + zehnerText

    END IF

END IF

 

# Zusammenfügen des finalen Textes

finalerText = hunderterText + restText

 

AUSGABE: finalerText

 

  • Like 4
  • Confused 1
Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...