Трюк заключается в использовании инвариантной культуры, чтобы разобрать точку во всех культурах.
double.Parse("3.5", System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo);