I have this string “1.79769313486232E+308” and am trying to convert it to a .NET numeric value (double?) but am getting the below exception. I am using Convert.ToDouble(). What is the proper way to do this conversion?
OverflowException: Value was either too large or too small for a Double
The problem is likely due to the fact that
Double.MaxValuewas converted to a string, and when the string is output, not all the digits are output, instead it is rounded. Parsing this value overflows the double.Using
Double.TryParseand subsequently checking equality on the string “1.79769313486232E+308” in case of failure and substitutingDouble.MaxValueshould be a quick workaround, if you need to keep the string the way it is.EDIT: Of course, if you don’t need to keep the string the way it is, use the Round Trip format specifier to produce the string in the first place, as Jon describes in his answer.