Habe mal aus Langeweile einen Codesnippet aus einer alten Vorlesung in C# übersetzt.
Dieses kann Integerwerte in ausgeschriebene Zahlen, bis 10^27, (Einhundertfünfundfünfzig) übersetzen.
public static class SprechendeZahlen
{
private static string[] kleiner20 = new string[] { "null", "ein", "zwei", "drei", "vier", "fünf", "sechs", "sieben", "acht", "neun", "zehn", "elf", "zwölf", "dreizehn", "vierzhen", "fünfzehn", "sechszehn", "siebzehn", "achtzehn", "neunzehn" };
private static string[] zehner = new string[] { "null", "zehn", "zwanzig", "dreißig", "vierzig", "fünfzig", "sechzig", "siebzig", "achtzig", "neunzig" };
private static string[] singular = new string[] { "s", "tausend", "e Million", "e Milliarde", "e Billion", "e Billiarde", "e Trillion", "e Trilliade" };
private static string[] plural = new string[] { "", "tausend", "Millionen", "Milliarden", "Billionen", "Billiarden", "Trillionen", "Trilliaden", "Quadrillionen", "Quadrilliarden" };
public static string GetZahlenname(int zahl)
{
if (zahl == 0)
return "Null";
else if (zahl < 1 || zahl ≥ Math.Pow(plural.Length, 28))
return "InvalidNumber";
List<int> gruppe = new List<int>();
int i = -1, stellen;
while (zahl>0)
{
stellen = zahl % 1000;
zahl = zahl / 1000;
i++;
gruppe.Add(stellen);
}
StringBuilder sb = new StringBuilder();
while (i≥0)
{
sb.Append(GetHunderter(gruppe[i], singular[i], plural[i]));
i--;
}
return sb.ToString();
}
private static string GetHunderter(int zahl, string singular, string plural)
{
if (zahl == 0)
return "";
else if (zahl == 1)
return "ein" + singular;
StringBuilder sb = new StringBuilder();
var h = zahl / 100;
var r = zahl % 100;
if (h > 0)
sb.Append(kleiner20[h] + "hundert");
if (r>0)
{
if (r == 1)
sb.Append("eins");
else if (r < 20)
sb.Append(kleiner20[r]);
else
{
var z = r / 10;
var rr = r % 10;
if (rr > 0)
sb.Append(kleiner20[rr]);
if (rr > 0 && z > 0)
sb.Append("und");
if (z > 0)
sb.Append(zehner[z]);
}
}
return sb.ToString()+plural;
}
}
Hier im Forum und sonstigem Netz gibts dazu zahlreiche Lösungen, finde obige aber eleganter/übersichtlicher und vor allem im Bereich sämtlicher im Alltag ausgeschriebener Zahlen
MfG
emuuu
Sprechende Zahlen