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);
}

Re: Double.MaxValue Casting Problems by Laura

Laura
Thu Feb 15 10:58:52 CST 2007

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 Blakeley" <KevinBlakeley@discussions.microsoft.com> ha scritto nel
messaggio news:13280E1B-CDAC-4939-B829-B9FA2CADB7D8@microsoft.com...
>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);
> }



Re: Double.MaxValue Casting Problems by Peter

Peter
Thu Feb 15 15:53:13 CST 2007

Kevin Blakeley wrote:
> 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

Re: Double.MaxValue Casting Problems by KevinBlakeley

KevinBlakeley
Thu Feb 15 16:01:02 CST 2007

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.

"Peter Bromley" wrote:

> Kevin Blakeley wrote:
> > 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
>