一尘不染

解析字符串以加倍逗号和点

c#

我正在尝试编写一个函数,该函数基本上将字符串数组转换为字符串数组,其中该数组中的所有双精度数均四舍五入到我设置的小数位数。数组中也可以有根本没有双精度值的字符串。

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”会以错误的方式处理逗号。有人为此提供简单有效的解决方案吗?


阅读 172

收藏
2020-05-19

共1个答案

一尘不染

您想将点(.)视为逗号(,)。因此,更换

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

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