К сожалению, это значение больше double.MaxValue
, следовательно, исключение.
Как предполагает codekaizen, вы можете жестко закодировать тест для строки. Лучшая альтернатива (IMO), если вы производите строку, в первую очередь, это использовать спецификатор формата "r". Тогда вместо строки, которую вы создадите, будет «1.7976931348623157E + 308», что затем будет правильно проанализировано:
string s = double.MaxValue.ToString("r");
double d = double.Parse(s); // No exception
Очевидно, что это не поможет, если у вас нет контроля над данными - но тогда вы должны понимать, что в этом случае вы, скорее всего, потеряете данные.