Вы должны быть знакомы с поддержкой форматирования строки C #, как на входе, так и на выходе.
http://blog.stevex.net/string-formatting-in-csharp/
Используйте Double.TryParse()
с одной из перегрузок, которая включает информацию о стиле.
например, TryParse(string s, NumberStyles style, IFormatProvider provider, out double result)
(Должны быть схожие методы для Integer, Decimal, Float и т. Д. В зависимости от требуемой точности).
Этот подход также сделает ваше приложение болееI18N дружественен, так как разные культуры используют разные соглашения для группировки цифр (например, многие европейские культуры делают 1234,567,89 для представления 1 234 567,89)
TryParse(string s, out double result)
также должны работать, но с меньшим контролем над форматом входной строки.
Они функционально эквивалентны:
double answer;
var result = Double.TryParse("123,456.78", NumberStyles.Float | NumberStyles.AllowThousands, CultureInfo.CurrentUICulture, out answer);
Console.WriteLine("result: {0} answer {1}", result, answer);
result = Double.TryParse("123,456.78", out answer);
Console.WriteLine("result: {0} answer {1}", result, answer);
Обратите внимание, что NumberStyles.Float
является составной частью других числовых стилей (например, NumberStyles.AllowLeadingSign
, NumberStyles.AllowDecimalPoint
и т. Д.).
Не нужно вручную убирать запятые и т. Д.!
См. MSDN для получения дополнительной информации.