Я полагаю, что это проблемы с локализацией, и вам нужно использовать перегрузку , которая указывает поставщика формата .
Возможно, проблема в том, что он ожидает ,
в качестве десятичного разделителя и .
в качестве разделителя тысяч (и, следовательно, игнорирует его в действительности).
Пример воспроизведения возможной проблемы:
string input = "5.67";
Console.WriteLine(Double.Parse(input, new CultureInfo("en-gb")));
Console.WriteLine(Double.Parse(input, new CultureInfo("de-de")));
Это выводит:
5.67
567