Double.MaxValue Casting Problems

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

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);
}
 
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
 
Kevin said:
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);
}
Perhaps you should try the round-trip format string instead

String str = dbl.ToString("R");


Peter
 
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.
 
Back
Top