C# 用double.TryParse奇怪行为解析数字
为什么带有这些设置的C# 用double.TryParse奇怪行为解析数字,c#,parsing,C#,Parsing,为什么带有这些设置的double.TryParse()无法解析 double.TryParse("1.035,00", NumberStyles.AllowCurrencySymbol | NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite | NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign, GlobalSettings.Instance.
double.TryParse()
无法解析
double.TryParse("1.035,00",
NumberStyles.AllowCurrencySymbol | NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite |
NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign,
GlobalSettings.Instance.DefaultCulture, out price);
其中,DefaultCulture
是sl SI(斯洛文尼亚语),它将点
作为数字分组符号,并作为小数点。解析后,price
将保持0
?您缺少
numberstyle。所有:
double.TryParse("1.035,00", NumberStyles.AllowCurrencySymbol |
NumberStyles.AllowLeadingWhite |
NumberStyles.AllowTrailingWhite |
NumberStyles.AllowDecimalPoint |
NumberStyles.AllowLeadingSign |
NumberStyles.AllowThousands,
GlobalSettings.Instance.DefaultCulture, out price);
这对我有用
double.TryParse("1.035,00",
NumberStyles.Any,
GlobalSettings.Instance.DefaultCulture, out price);
TryParse返回一个bool
,指示解析值是成功还是失败。例如,TryParse返回false
。因此,price
为0
的原因是无法解析字符串。我觉得奇怪的是,有些人会因为本地化而投票关闭。如果问题是文化,那么它将影响到许多文化,所有那些使用逗号作为十进制分隔符的文化,这是ISO标准,也是大多数国家使用的表示法。任何人都可以建议使用数字样式。从某种意义上说,如果有任何潜在问题?根据MSDN,表明使用了除AllowehexSpecifier之外的所有样式。这是一种复合数字样式。