|
dev
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Double.MaxValue Casting Problemswhen 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 Show quote "Kevin Blakeley" <KevinBlake***@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); > } Kevin Blakeley wrote:
Show quote > I have some code that takes Double.MaxValue and converts it to a string, but Perhaps you should try the round-trip format string instead> 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); > } 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. Show quote "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 > |
|||||||||||||||||||||||