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