无法解析双倍

时间:2010-10-22 21:32:41

标签: c# parsing

我正在尝试使用表达式

解析$ 15,270.75之类的值
double cost = 0;
double.TryParse("$15,270.75", NumberStyles.AllowThousands | NumberStyles.AllowCurrencySymbol | NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out cost);

但没有成功

5 个答案:

答案 0 :(得分:8)

不变文化的货币符号不是$,即¤。这有效:

double cost = double.Parse("¤15,270.75", NumberStyles.AllowThousands | NumberStyles.AllowCurrencySymbol | NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture);

您需要一个支持此格式的CultureInfo

答案 1 :(得分:4)

以下作品:

var culture = new CultureInfo("en-US");

culture.NumberFormat.CurrencyGroupSeparator = ".";
culture.NumberFormat.CurrencyDecimalSeparator = ",";

double.TryParse("$15.270,75", NumberStyles.AllowThousands | NumberStyles.AllowCurrencySymbol | NumberStyles.AllowDecimalPoint, culture, out cost);

我在这里使用的文化是$符号的美国。我手动设置组和小数分隔符的原因是因为输入字符串中使用的格式与en-US的文化不同。

也许你期待一种不是美国的特定文化。试着通过那个。

答案 2 :(得分:1)

这是因为您使用的是InvariantCulture。你需要一个美国CultureInfo

答案 3 :(得分:1)

这不适用于CultureInfo.Invariant文化。使用适当的CultureInfo。

答案 4 :(得分:0)

如果您想要适用于任何语言环境的内容,请使用CultureInfo.CurrentCulture作为IFormatProvider参数。