Maison >développement back-end >C++ >Comment convertir efficacement des entiers sous leur forme écrite sans tables de recherche étendues ?
Méthode efficace de conversion d'entier en texte
Question :
Comment convertir efficacement un entier en sa forme littérale ? Par exemple :
<code>string 文字形式 = 整数转文字(21);</code>
Devrait afficher "Vingt et Un".
Existe-t-il un moyen de procéder sans recourir à des tables de recherche massives ?
Réponse :
La solution suivante offre une approche pratique :
<code class="language-c#">public static class HumanFriendlyInteger { static string[] ones = new string[] { "", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine" }; static string[] teens = new string[] { "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen" }; static string[] tens = new string[] { "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" }; static string[] thousandsGroups = { "", " Thousand", " Million", " Billion" }; private static string FriendlyInteger(int n, string leftDigits, int thousands) { if (n == 0) { return leftDigits; } string friendlyInt = leftDigits; if (friendlyInt.Length > 0) { friendlyInt += " "; } if (n < 100) { if (n < 20) { friendlyInt += teens[n - 10]; } else { friendlyInt += tens[(n / 10) - 2]; if (n % 10 > 0) { friendlyInt += " " + ones[n % 10]; } } } else { friendlyInt += ones[n / 100] + " Hundred"; if (n % 100 > 0) { friendlyInt += " " + FriendlyInteger(n % 100, "", 0); } } return friendlyInt + thousandsGroups[thousands]; } public static string IntegerToWritten(int n) { if (n == 0) return "Zero"; if (n < 0) return "Minus " + IntegerToWritten(-n); string result = ""; int thousands = 0; while (n > 0) { result = FriendlyInteger(n % 1000, result, thousands) + result; n /= 1000; thousands++; } return result.Trim(); } }</code>
Cette méthode évite d'utiliser de grandes tables de recherche. Au lieu de cela, il divise l’entier en ses différentes parties (milliers, centaines, dizaines, unités) et convertit chaque partie séparément. Il prend en charge des nombres allant jusqu'à des milliards.
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!