1. ホーム
  2. c#

[解決済み] 文字列をコンマとポイントでダブルにパースする

2023-06-02 03:55:11

質問

基本的に文字列の配列を、配列内のすべてのdouble値を私が設定した小数点以下の桁数に丸める文字列の配列に変換する関数を書こうとしています。また、配列内の文字列は、全くダブル値ではないこともあります。

string[,] values = new string[1, 3];

values[0, 0] = "hello";
values[0, 1] = "0.123";
values[0, 2] = "0,123";

int decimalPlaces = 2;

double tmp;
string format = "F" + decimalPlaces.ToString();
IFormatProvider provider = CultureInfo.InvariantCulture;
for (int i = 0; i < values.GetLength(0); i++)
{
    for (int j = 0; j < values.GetLength(1); j++)
    {
        if (double.TryParse(values[i, j], out tmp))
        {
            values[i, j] = tmp.ToString(format, provider);
        }
    }
}

Console.ReadLine();

結果は "hello" , "0.12", "0.12" でなければならないのに、 "hello", "123.00", "0.12" ではカンマが間違った方法で処理されてしまうのです。どなたか、これに対するシンプルで効率的な解決策をお持ちの方はいらっしゃいますか?

どのように解決するのですか?

ドット( . ) をカンマ ( , ). そこで、次のように置き換えます。

if (double.TryParse(values[i, j], out tmp))

if (double.TryParse(values[i, j].Replace('.', ','), out tmp))