整数をリテラル表現に変換することは、一般的なプログラミング作業です。ただし、大規模なルックアップ テーブルを使用せずに効率を達成するのは困難な場合があります。この記事では、この制限を克服する 1 つの方法を検討します。
ソリューションの中核は、HumanFriendlyInteger
というクラスです。これには、さまざまな額面の値 (1、10 など) を表す一連の配列と、リテラル表現を再帰的に構築する FriendlyInteger
と呼ばれるメソッドが含まれています。
FriendlyInteger
メソッドは再帰的に動作してリテラル数値を構築します。プロセスは次のとおりです:
n
が 0 の場合、現在の leftDigits
(左端の桁を処理するために使用) を返します。 n
が 10 未満の場合は、単位配列を直接使用してリテラル形式を取得します。 10 から 19 までの値の場合、10 の位の配列が使用されます。 n
が 20 ~ 99 の場合、n % 10
(1 の位) を再帰的に変換し、その先頭に 10 の位の表現 (例: "Thirty") を付加します。 n % 100
(十と一の位) を再帰的に変換し、その前に百の位の表現を付加します。 n % 1000
を再帰的に変換し、適切な 1000 番目のグループ表現 (例: "Thousand"、"Million") を追加します。 n % 1000
が 0 の場合、再帰は終了します。 IntegerToWritten
メソッドは、負の数と 0 の特殊なケースを処理し、「ゼロ」を返すラッパー関数です。
次の使用例を考えてみましょう:
<code class="language-csharp">using HumanFriendlyInteger; public class Program { public static void Main() { int number = 21; string writtenNumber = IntegerToWritten(number); Console.WriteLine($"{number} 的文字形式:{writtenNumber}"); } }</code>
このコードは次のように出力します:
<code>21 的文字形式:Twenty One</code>
この再帰的アプローチは、大規模なルックアップ テーブルに依存せずに整数をリテラル形式に変換する効率的な方法を提供します。このアプローチでは、問題を小さな部分に分割することで、最小限のオーバーヘッドで望ましい結果が得られます。
以上がC# で整数を同等の表記数値に効率的に変換するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。