Maison >développement back-end >C++ >Comment puis-je convertir des nombres en mots en C# ?

Comment puis-je convertir des nombres en mots en C# ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-24 14:11:08608parcourir

How Can I Convert Numbers to Words in C#?

Conversion de nombres en texte en C#

La conversion de valeurs numériques vers leur forme littérale correspondante est une tâche courante en programmation. Cette conversion est particulièrement utile dans divers scénarios, tels que la génération de factures, l'automatisation des annonces vocales ou le traitement des commandes vocales.

Une approche consiste à utiliser une combinaison d'arithmétique modulaire, d'instructions conditionnelles et de tableaux ou dictionnaires prédéfinis pour mapper les nombres et les groupes de nombres à leurs représentations littérales correspondantes. Voici un exemple implémenté en C# :

<code class="language-csharp">public static string NumberToWords(int number)
{
    // 处理零和负数的特殊情况
    if (number == 0)
        return "zero";
    else if (number < 0)
        return "minus " + NumberToWords(-number);

    string words = "";

    // 处理百万
    if (number >= 1000000)
    {
        words += NumberToWords(number / 1000000) + " million ";
        number %= 1000000;
    }

    // 处理千位
    if (number >= 1000)
    {
        words += NumberToWords(number / 1000) + " thousand ";
        number %= 1000;
    }

    // 处理百位
    if (number >= 100)
    {
        words += NumberToWords(number / 100) + " hundred ";
        number %= 100;
    }

    // 处理剩余数字
    if (number > 0)
    {
        if (words != "")
            words += "and ";

        string[] units = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" };
        string[] tens = { "zero", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" };

        if (number < 20)
            words += units[number];
        else
        {
            words += tens[number / 10];
            if (number % 10 > 0)
                words += "-" + units[number % 10];
        }
    }

    return words.Trim();
}</code>

Pour utiliser cette méthode, fournissez simplement un entier comme paramètre et il renverra l'équivalent littéral de ce nombre. Par exemple, NumberToWords(123) renverra « cent vingt-trois » et NumberToWords(-543) renverra « moins cinq cent quarante-trois ». Le code a été amélioré pour gérer l'utilisation du connecteur "et" et une gestion plus claire des nombres négatifs et zéro. La méthode Trim() est utilisée pour supprimer les espaces supplémentaires.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn