Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
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.
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
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
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
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"?
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?
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:
Windows hat wohl auch eine uralte API für eine interne TTS-Engine. Man kann die TTS-Engine z.B. mit "C:\Windows\sysWOW64\speech\SpeechUX\SAPI.cpl" testen.
(https://en.wikipedia.org/wiki/Microsoft_Speech_API)
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...