2011-03-30 31 views
1
var doubleMaxValueString = double.MaxValue.ToString(CultureInfo.InvariantCulture); 

,我想将其转换回双,所以我在做这样的:转换双字符串返回到一倍

,但它不工作...

我如何将它转换回双倍?

谢谢!

编辑: 它会抛出:OverflowExceptionValue:对于Double来说太大或太小。

我使用VAR,因为它更实用=)

+4

你能更具体的不是“不工作”?它抛出异常吗?你没有得到你期望的价值吗?不相关:我也很好奇你为什么选择在这些情况下使用'var',因为你知道这两个函数返回的类型是什么(但也许别人可以提供一个关于这个)。 – eldarerathis 2011-03-30 20:10:23

+0

你为什么这样做?为什么你不会在第二个例子中使用'double.MaxValue'? – 2011-03-30 20:17:47

+0

我正在创建一个系统,用户可以在其中键入一个值并选择其类型,在这种情况下,我在测试时出现此错误...这就是为什么......我只是想了解为什么它不起作用。 – Bruno 2011-03-30 20:19:41

回答

7

你可以找到很好的解释here。基本上问题是,在将double转换为string时,我们正在将其舍入,因此它超过了double.MaxValue。您可以通过这种方式解决,例如:在“R”的说法

var doubleMaxValueString = double.MaxValue.ToString("R", CultureInfo.InvariantCulture); 
var doubleMaxValue = double.Parse(doubleMaxValueString, CultureInfo.InvariantCulture); 

的更多信息,以及为什么它可以帮助发现here on msdn

+0

很酷,谢谢!但是R在这种情况下做了什么? – Bruno 2011-03-30 20:22:11

+0

太棒了!谢谢! – Bruno 2011-03-30 20:23:15