这行代码:
Console.WriteLine(Convert.ToInt32(“23,23”) + 1);
抛出异常。
这行代码:
Console.WriteLine(Convert.ToDouble(“23,23”) + 1);
打印 2324。
有谁知道为什么会这样?我认为第二次转变不会带来任何好处。
From System.Double.Parse 的 MSDN 文档 http://msdn.microsoft.com/en-us/library/fd84bdyt.aspx:
s 参数可以包含 [...] 形式的字符串:
[ws][sign][integral-digits[,]]integral-digits[.[fractional-digits]][e[sign]exponential-digits][ws]
这里,逗号(,
) 代表“[a] 文化特定的千位分隔符”。
总结一下:如果当前区域性的千位分隔符出现在字符串中的任何位置,则它会被忽略Double.Parse
(由内部调用Convert.ToDouble
).
Int32.Parse(字符串) http://msdn.microsoft.com/en-us/library/b3h1hf19.aspx另一方面,字符串中不允许有千位分隔符:
[ws][sign]digits[ws]
这就是为什么你的第一个例子抛出异常。您可以更改两者的此行为Double.Parse
and Int32.Parse
通过使用允许您指定的重载NumberStyles
,正如其他答案所解释的那样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)