Zum Inhalt springen

Zahl in Worten anzeigen


Gehe zur Lösung Gelöst von Moritz,

Empfohlene Beiträge

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 zu diesem Kommentar
Auf anderen Seiten teilen

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 zu diesem Kommentar
Auf anderen Seiten teilen

  • Lösung

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
  • Zustimmung 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

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
  • Verwirrt 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

Bitte melde Dich an, um einen Kommentar zu hinterlassen

Du kannst nach der Anmeldung einen Kommentar hinterlassen



Jetzt anmelden
×
×
  • Neu erstellen...