数字を英語の単語に変換しようとすると、190000009 などの数字でバグが発生し、誤って変換されます。 「1億9千万」に変換されます。最後の数字「9」が結果にありません。
問題は数値内のゼロに起因します。 triConvert 関数は、3 つの連続するゼロに遭遇すると、文字列「dontAddBigSufix」を返します。これは、数字のグループに接尾辞を付けるときに、対応する単位 (千、百万、十億など) の用語を省略するようにプログラムに指示します。
190000009 の場合、中間の 3 つのゼロにより、" が返されます。 dontAddBigSufix」は 3 桁の 2 番目のグループで、100 万の値を表します。その結果、「million」サフィックスは追加されず、最終出力では最後の桁がスキップされます。
次のコード セグメントは、この問題を示しています。
for (b = finlOutPut.length - 1; b >= 0; b--) { if (finlOutPut[b] != "dontAddBigSufix") { finlOutPut[b] = finlOutPut[b] + bigNumArry[bigScalCntr] + ' , '; bigScalCntr++; } else { //replace the string at finlOP[b] from "dontAddBigSufix" to empty String. finlOutPut[b] = ' '; bigScalCntr++; //advance the counter } }
解決策は、対応する bigNumArry 値が次の値であるかどうかを確認することです。 「百万」かどうか。そうであり、finlOutPut[b] が「dontAddBigSufix」に等しい場合、finlOutPut[b] はスペースではなく空の文字列に置き換えられる必要があります。これにより、数値の途中にゼロがある場合に「million」という接尾辞が追加されなくなります。
以上が190000009 のような数字を英単語に変換すると、最後の桁「9」が欠落するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。