I have some code that takes Double.MaxValue and converts it to a string, but
when I try to convert it back to a double, it fails. Shouldn't the value be
able to be converted back to a double without error?
Here is a simple code sample that demonstrates the problem:
try
{
Double dbl = double.MinValue;
//String sdbl = dbl.ToString(); // This errors as well
String str = dbl.ToString("N");
// This throws "Value was either too large or too small
for a Double."
Double dbl2 = Convert.ToDouble(str);
}
catch (Exception ex)
{
System.Diagnostics.Debug.Write(ex.Message);
}
Laura T. - 15 Feb 2007 16:58 GMT
Floating point operations are always approximative, conversions of them to
string even worse.
If you need to convert, it might be better to check the inherent limits
(Min/Max/Infinity etc) and handle them as special case, like:
Double dbl2;
if(str!=double.MinValue.ToString())
dbl2 = Convert.ToDouble(str);
else
dbl2=double.MinValue
>I have some code that takes Double.MaxValue and converts it to a string,
>but
[quoted text clipped - 18 lines]
> System.Diagnostics.Debug.Write(ex.Message);
> }
Peter Bromley - 15 Feb 2007 21:53 GMT
> I have some code that takes Double.MaxValue and converts it to a string, but
> when I try to convert it back to a double, it fails. Shouldn't the value be
[quoted text clipped - 16 lines]
> System.Diagnostics.Debug.Write(ex.Message);
> }
Perhaps you should try the round-trip format string instead
String str = dbl.ToString("R");
Peter
Kevin Blakeley - 15 Feb 2007 22:01 GMT
Thanks! That worked like a champ. I tried a few of the fomatting types but
did not try that one. I even tested to see if my value was equal to
Double.Minvalue and it evaluated to true.
Thanks again.
> > I have some code that takes Double.MaxValue and converts it to a string, but
> > when I try to convert it back to a double, it fails. Shouldn't the value be
[quoted text clipped - 21 lines]
>
> Peter