venerdì 4 luglio 2025

C# convert euro amount to letters

Il frammento di codice qui di seguito, illustra una tecnica per convertire nel linguaggio di programmazione C# l'importo di euro in lettere.
Una tecnica per convertire gli importi euro in lettere.


Di seguito si riporta la classe con il metodo per convertire gli importi in lettere.

Classe:

C#

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) : "");

    }

}




Di seguito il relativo utilizzo.

C#

  string testoConvertito  = EuroInLettere.ConvertiEuroInLettere(decimal.Parse(numero), true);


Nessun commento: