実際のところ、数値データを生成できる複数のシステムがあり、それらはテキスト ファイルで Web サーバーに保存されています。一部のシステムでは小数点を分数区切りとして使用し、一部のシステムでは小数点のコンマを同じように使用します。
アプリケーション (ファット クライアント、.net 2.0) も、どちらの種類のシステムでも実行できます。
それで、つまずいた後、私はこれをしました:(http://pastebin.com/vhLXABDD)
public static bool HasDecimalComma;
public static bool HasDecimalPeriod;
public static double GetNumber(string NumberString)
{
if (!HasDecimalComma && !HasDecimalPeriod)
{
string s = string.Format("{0:0.0}", 123.123);
if (s.Contains('.'))
{
HasDecimalPeriod = true;
}
else if (s.Contains(','))
{
HasDecimalComma = true;
}
else
{
throw new SystemException(string.Format("strange number format '{0}'", s));
}
}
if (HasDecimalComma)
{
return double.Parse(NumberString.Replace('.', ','));
}
if (HasDecimalPeriod)
{
return double.Parse(NumberString.Replace(',', '.'));
}
throw new ArgumentException(string.Format("can't parse '{0}'", NumberString));
}
より良い、よりエレガントな方法を提案していただけますか?
編集:
前に言及しなかったことをお詫び申し上げます。あなたの答えはその方向に傾いているため、文化の生成を数字で保存することはできません。それを「検出」しようとすることしかできません。