Próbuję napisać funkcję, która zasadniczo przekształca tablicę łańcuchów w tablicę ciągów, gdzie wszystkie duble w tablicy są zaokrąglane do liczby dziesiętnych, które ustawiłem. W tablicy mogą być również łańcuchy, które nie są w ogóle podwójnymi wartościami.Łańcuchy parse do podwojenia z przecinkiem i punktem
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();
Wynik musi być: „cześć”, „0.12”, „0.12”, ale jest „cześć”, „123.00”, „0.12” będzie traktować przecinek w niewłaściwy sposób. Czy ktoś ma proste i wydajne rozwiązanie?
Musisz określić kulturę podczas analizy, w przeciwnym razie będzie działać tylko tam, gdzie aktualna kultura używa "," jako kropka dziesiętna. – hultqvist
Dobrze. Dzięki za ostrzeżenie. – mmdemirbas
Wiem, że wątek jest już dawno martwy, ale zastąpiłbym 'Replace (string, string)' 'replace (char, char)' dla lepszej wydajności ..... – Unknown6656