如何获取当前文化格式的数字货币

Posted

技术标签:

【中文标题】如何获取当前文化格式的数字货币【英文标题】:How to get Current culture formatted number currency 【发布时间】:2019-05-21 12:50:44 【问题描述】:

使用以下方式,可以获得当前文化的 2 位数货币。 string.Format(CultureInfo.CurrentCulture, "0:C2", amount) 结果为:$1,000.00

我们如何使用美元或欧元等货币符号获取货币,如下所示,

预期结果:1,000.00 USD

【问题讨论】:

【参考方案1】:

这可以使用RegionInfo 类来实现:

decimal amount = 1000m;

CultureInfo culture = CultureInfo.CurrentCulture;
RegionInfo region = RegionInfo.CurrentRegion; //or new RegionInfo(...)
string formattedCurrency = string.Format(CultureInfo.CurrentCulture, "0:C2 1", amount, region.ISOCurrencySymbol);  

在上面的代码中,formattedCurrency 产生一个字符串值"$1,000.00 USD"

如果您不希望使用货币符号,您可以执行类似Replace(culture.NumberFormat.CurrencySymbol, "") 的操作,或者使用N 说明符代替C。两者都产生"1,000.00 USD" 的值(与我的地区/文化)。 此问题解决了此特定主题:Format a double value like currency but without the currency sign (C#) 请注意,接受的答案(使用N)似乎并非对所有文化都友好。

【讨论】:

是否有理由替代使用 N ?反之亦然? 当然@CodeStranger。请参阅对此答案的第一条评论:***.com/a/1048672/2957232。我对其他文化的表现形式没有太多经验,因此这里似乎首选替换。另一个答案使克隆的NumberFormatInfo 上的 CurrencySymbol 空白。有几种方法可以给这只猫剥皮。

以上是关于如何获取当前文化格式的数字货币的主要内容,如果未能解决你的问题,请参考以下文章

显示的货币格式

Java从字符串中获取数字或货币格式[关闭]

如何解析带有欧元货币符号的数字字符串? [复制]

如何仅使用货币代码将数字格式化为货币?

VB.NET 根据所选文化格式化数字

如何应用动态数字格式?