この投稿は C# と .Net に関するものですが、他の技術にとって価値のある情報もあります。
物心ついたときから、10 進数の解析スタイルが異なるためにアプリやゲームがクラッシュするという問題が発生していました。CAD アプリ、ライブラリから Web ページまで、非常に頻繁に発生します。無知なのか知識不足なのかわかりませんが、本当に迷惑です。
どうしたの?これについてのウィキ記事がありますが、短いです:
こちらは世界中でどのような小数点記号(小数点記号)が使われているかを示した地図です。
小数点:
- ピリオド — 青
- コンマ — 緑
- 非西アラビア数字 — 赤
- 不明 — グレー
ヨーロッパのほとんど、南アメリカでは、1 000 000,00 または 1000000,00 と書きます。時には 1.000.000,00 を「インペリアル」(青色でマーク) の反対として書き、1,000,000.00 と書きます。
先月私が遭遇したすべての問題からいくつかを紹介しましょう。
- 読みにくいウェブページの数: 最も視聴回数の多い YouTube 動画の 1 つを見てみましょう。それは私に 390159851 を示しています。100 万を超える数は非常に読みにくいです。3900万ですか390ですか?
Mirosoft XNA for Windows Phone 7 の例: XML ファイルを解析して XNA アニメーションを生成する非常に優れたクラスがあります。
/// <summary> /// Loads animation setting from xml file. /// </summary> private void LoadAnimiationFromXML() { XDocument doc = XDocument.Load("Content/Textures/AnimationsDefinition.xml"); XName name = XName.Get("Definition"); var definitions = doc.Document.Descendants(name); if (animationDefinition.Attribute("Speed") != null) { animation.SetFrameInvterval(TimeSpan.FromMilliseconds( double.Parse(animationDefinition.Attribute("Speed").Value))); }
double.Parse
例外をスローします。単純な解決策の 1 つは、 を使用XmlConvert.ToDouble();
または解析することInvariantCulture
です。CSV ファイルを使用して入力ベクトルを CSV として保存する .Net アプリもスローします。
クラス内でいくつかの解析を行う別の .Net アプリ - スロー。
では、どうすればこれを修正できますか?
- コードのバグを修正します - 利用可能なソース コードと退屈な場合にのみ可能です。
- データ (CVS、XML など) を変更します。可能であっても、データの変更にあまり満足していません。
- OS のデフォルトの小数点記号を変更します - 起こりません。
これをスラブする他の方法はありますか?アプリを不変にすることはできますか? 別の環境でアプリを起動するようなものです。
PS。アプリを実行したいのですが、コードがありません。