public static class EuroInLettere
{
private static readonly string[] Unita = { "zero", "uno", "due", "tre", "quattro", "cinque", "sei", "sette", "otto", "nove" };
private static readonly string[] Decine = { "", "dieci", "venti", "trenta", "quaranta", "cinquanta", "sessanta", "settanta", "ottanta", "novanta" };
private static readonly string[] DecineSpeciali = { "dieci", "undici", "dodici", "tredici", "quattordici", "quindici", "sedici", "diciassette", "diciotto", "diciannove" };
public static string ConvertiEuroInLettere(decimal
importo, bool centesimiTesto = false)
{
if
(importo == 0)
return "zero
euro";
string euroParte = ConvertiNumeroInLettere((long)importo);
int
centesimiParte = (int)((importo - Math.Floor(importo)) * 100);
if(centesimiTesto==false)
return $"{euroParte} euro /{centesimiParte:00}";
else
{
//tutto lettere
string centesimiParteTesto =
ConvertiNumeroInLettere((long)((importo - Math.Floor(importo)) * 100));
return $"{euroParte} euro e {centesimiParteTesto} centesimi";
}
}
private static string ConvertiNumeroInLettere(long numero)
{
if (numero
< 10)
return Unita[numero];
if (numero
< 20)
return DecineSpeciali[numero - 10];
if (numero
< 100)
return Decine[numero / 10] + (numero % 10 > 0 ? Unita[numero % 10] : "");
if (numero
< 1000)
return (numero / 100 == 1 ? "cento" :
Unita[numero / 100] + "cento") + (numero % 100 > 0 ?
ConvertiNumeroInLettere(numero % 100) : "");
if (numero
< 1000000)
return (numero / 1000 == 1 ? "mille" :
ConvertiNumeroInLettere(numero / 1000) + "mila") + (numero % 1000 > 0 ?
ConvertiNumeroInLettere(numero % 1000) : "");
if (numero
< 1000000000)
return (numero / 1000000 == 1 ? "un milione" : ConvertiNumeroInLettere(numero / 1000000) + " milioni") + (numero % 1000000 > 0 ?
ConvertiNumeroInLettere(numero % 1000000) : "");
return (numero / 1000000000 == 1 ? "un miliardo" : ConvertiNumeroInLettere(numero / 1000000000) + " miliardi") + (numero % 1000000000 > 0 ?
ConvertiNumeroInLettere(numero % 1000000000) : "");
}
}
string testoConvertito = EuroInLettere.ConvertiEuroInLettere(decimal.Parse(numero), true);
Nessun commento:
Posta un commento