转换货币$ 232,680.00到小数

时间:2016-03-04 09:45:10

标签: c# decimal currency

$232,680.00获取十进制值的最佳方法是什么才有可能没有正则表达式。

这也行不通 -

decimal.TryParse(Response.assess_market_value, NumberStyles.Currency, CultureInfo.InvariantCulture, out marketTotalValue);

2 个答案:

答案 0 :(得分:5)

您可以合并AllowCurrencySymbol, AllowDecimalPoint and AllowThousands styles并使用$作为CurrencySymbol的文化,例如en-US

var s = "$232,680.00";
decimal d = decimal.Parse(s, NumberStyles.AllowCurrencySymbol |
                             NumberStyles.AllowDecimalPoint | 
                             NumberStyles.AllowThousands, 
                             CultureInfo.GetCultureInfo("en-US"));

或更简单的使用NumberStyles.Currency而不是包含这些样式。

decimal d = decimal.Parse(s, NumberStyles.Currency, CultureInfo.GetCultureInfo("en-US"));

代码中的问题是InvariantCulture¤(货币符号(U+00A4))而不是$ CurrencySymbol。如果您将InvariantCulture更改为CultureInfo.GetCultureInfo("en-US"),您的代码也会正常运行。

en-US文化完全适合您的字符串,因为它有.作为小数点分隔符,,作为千位分隔符。

答案 1 :(得分:1)

有关于:

decimal.Parse("$232,680.00", NumberStyles.Currency, CultureInfo.GetCultureInfo("en-US"))