【发布时间】:2012-08-28 18:37:43
【问题描述】:
在 MSDN 上有一篇关于 Single.TryParse 的文章,其中包含以下示例代码: http://msdn.microsoft.com/en-us/library/26sxas5t%28v=vs.100%29.aspx
// Parse a floating-point value with a thousands separator.
value = "1,643.57";
if (Single.TryParse(value, out number))
Console.WriteLine(number);
else
Console.WriteLine("Unable to parse '{0}'.", value);
问题在文章中 TryParse 返回true 并且字符串被转换,但是当我尝试它时,它是false。我该如何解决这个问题?
UPD:为了简化解析,可以使用以下两行:
NumberStyles style = System.Globalization.NumberStyles.Any;
CultureInfo culture = CultureInfo.InvariantCulture;
此设置允许解析带有前导和尾随空格字符的负浮点数和字符串。
【问题讨论】:
-
您的系统文化是否使用
,作为千位分隔符和.作为小数分隔符?例如,在德国,情况并非如此。 -
你的问题可能是文化。仅当区域性使用
.作为小数分隔符时,才能解析您的号码。所以你应该使用一个带有文化的重载,并指定InvariantCulture。 -
哦,原来是分隔符。有那么一瞬间,我以为这其中牵涉到某种恶业。
-
显然问题是你不在美国。是时候搬家了。
标签: c# floating-point tryparse