多文化プログラミングの楽しい部分の 1 つは、数値形式です。
- アメリカ人は 10,000.50 を使用します
- ドイツ人は 10.000,50 を使用します
- フランス語使用 10 000,50
私の最初のアプローチは、文字列を取得し、セパレーターに遭遇するまで逆方向に解析し、これを小数点として使用することです。これには明らかな欠陥があります: 10.000 は 10 として解釈されます。
別のアプローチ: 文字列に 2 つの異なる非数値文字が含まれている場合、最後の文字を小数点記号として使用し、残りを破棄します。1 つしかない場合は、複数回発生するかどうかを確認し、発生する場合は破棄します。1 回しか表示されない場合は、その後に 3 桁あるかどうかを確認します。はいの場合は破棄し、そうでない場合は小数点記号として使用します。
明らかな「最善の解決策」は、ユーザーのカルチャまたはブラウザーを検出することですが、en-US Windows/ブラウザーを使用しているフランス人がいる場合、それは機能しません。
.net フレームワークにはDouble.(Try)Parse()
、数値形式の自動検出を試みるよりも優れた、神話上の黒魔術の浮動小数点パーサーが含まれていますか?