Zahl für Sprachausgabe als String umwandeln

sunshineh

Cadet 3rd Year
Registriert
Juni 2008
Beiträge
54
Ich benötige eine C-Funktion, der ich einen Double Wert übergebe und die mir als String die Zahl zurückgibt, wie sie gelesen werden sollte z.B. bei 125 Rückgabewert "Einhundertfünfundzwanzig".
Ich habe gesucht, ob ich was entsprechendes finde, aber die Funktion DoubleToStr wandelt sie ja nicht wörtlich in einen String um.
 
Okay, und was hindert dich daran, es zu programmieren?

Wirklich kompliziert ist es ja nicht, nur durch den großen Zahlenbereich halt vielleicht etwas lästig... aber den kann man vielleicht ja vorher eingrenzen.

Ansonsten ist es ja ziemlich simpel... spannend sind halt die beiden Stellen vor dem Komma, weil dort eben dann auch besondere Zahlen vorkommen können (also z.B. 10 - 20, die anders gebildet werden), und über 20 halt die Einer-Zahl vor der Zehner-Zahl kommt getrennt vom und.

Und nach dem Komma werden die Ziffern halt stur ananeinergereiht.

Spannend wird es halt, wenn es sich um periodische Zahlen handelt.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: PHuV
Die Frage die sich mir auch stellt wieso willst du das als String -> kann dein Tool/Sprachausgabe keine Zahlen verarbeiten?
Ansonsten wie @tollertyp geschrieben hat - einfach eine Funktion selber schreiben
 
  • Gefällt mir
Reaktionen: tollertyp
sunshineh schrieb:
Ich habe gesucht, ob ich was entsprechendes finde
wo hast du denn gesucht? Ich behaupte du bist nicht die erste Person, die sowas machen will.
"c translate number to words" - da findet man viele Code Snippets. Ja ist Englisch aber a) sucht du analog fuer Deutsch oder b) ersetzt du in den Code Snippets einfach die Keywords

Hier fuer 4 Stellen in Englisch: https://www.geeksforgeeks.org/convert-number-to-words/
 
  • Gefällt mir
Reaktionen: PHuV
Ebenfalls nicht in C aber dafür macht die genau das was du willst, sogar mehrsprachig:

https://github.com/savoirfairelinux/num2words

Das kannst du einfach als Vorlage nehmen und falls du Glück hast, gibt es in C einen Fork davon.
 
abcddcba schrieb:
ersetzt du in den Code Snippets einfach die Keywords
Ein bisschen mehr Logik braucht es schon da Deutsch leider eine der wenigen Sprachen ist, bei denen wir die Einser vor der Zehnerstelle nennen.
25 = fünf und zwanzig vs twenty five :) Aber das sollte machbar sein :)
 
Vielen herzlichen Dank!! Jetzt hab ich zwar schon angefangen, dann schau ich mir den letzten Link doch noch genauer an...
 
Nur mal so aus Neugierde: Du hattest im Titel auch "Sprachausgabe" geschrieben. Läuft das auf Text-to-Speech hinaus? Und wenn ja: Ist es dann wirklich notwendig aus der 125 ein "Einhundertfünfundzwanzig" zu machen? Ich ging bisher davon aus (und schnelle Tests im Internet bestätigen es auch), dass die Text-to-Speech-Engines schon wissen wie man "125" ausspricht, auch im deutschen.

Warum also umständlich mit "Einhundertfünfundzwanzig"?
 
  • Gefällt mir
Reaktionen: BeBur und kartoffelpü
Ich habe eine dll für die Sprachausgabe in einem anderen Programm (Metatrader) und diese spricht die Zahl 125 als "eins zwei fünf" aus.
Kennt ihr eine andere dll die ich einbinden könnte. Bei der schon alles automatisch ginge?
 
Ah, also das "übliche" Problem -> https://de.wikipedia.org/wiki/XY-Problem

Zu dem Thema kann ich leider nichts beitragen, ich habe keine Ahnung davon. Aber als ich nach "text to speech dll" googelte, fand ich vielversprechende Ergebnisse:
usw. usw.

Da wird es für dich doch bestimmt eine Lösung geben. Gerade die MS-APIs sind interessant. Dann programmierst du dir halt deine eigene DLL-Datei und musst keine Urheberrechtsverletzung begehen, weil du eine fremde DLL-Datei (Metatrader) nutzt. Oder hat der Hersteller die freien Nutzung der DLL-Datei erlaubt?
Ergänzung ()

PS:
Du kannst natürlich bei der "Einhundertfünfundzwanzig"-
Lösung bleiben. Aber wer weiß, welche Stolpersteine es noch mit der fremden DLL-Datei gibt? Daher würde ich an deiner Stelle eher die DLL-Datei austauschen.

Und mein letzter Satz mit der Urhebergeschichte ist natürlich nur relevant, falls du dein Programm an andere verteilst, womöglich sogar über das Internet. Bei vollständig privater Nutzung kann wohl nichts passieren, wie soll der Hersteller auch davon erfahren... ;)
 
Zuletzt bearbeitet:
Zurück
Oben