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之外的所有样式。这是一种复合数字样式。