Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将货币格式化为字符串时指定货币_C# - Fatal编程技术网

C# 将货币格式化为字符串时指定货币

C# 将货币格式化为字符串时指定货币,c#,C#,我想将带有关联货币的数字格式化为特定于语言环境的字符串。标准的.ToString(“C”,CultureInfo.CreateSpecificCulture(“xxx”)产生了错误的输出,因为它使用的是区域设置的货币,而不是该值实际表示的货币 我正在寻找一种方法来实现jqueryglobalize的功能,但是在C#中(请参见下面的相关表格) 场所 ----------------------------------------- 三字母货币代码| en(英语)| de(德语)| zh(中文) -

我想将带有关联货币的数字格式化为特定于语言环境的字符串。标准的
.ToString(“C”,CultureInfo.CreateSpecificCulture(“xxx”)
产生了错误的输出,因为它使用的是区域设置的货币,而不是该值实际表示的货币

我正在寻找一种方法来实现jqueryglobalize的功能,但是在C#中(请参见下面的相关表格)

场所 ----------------------------------------- 三字母货币代码| en(英语)| de(德语)| zh(中文) ---------------------- | ------------ | ----------- | ------------ 美元| 1.00 | 1,00 |美元1.00 1.00欧元1,00欧元1.00欧元 人民币1.00元1,00元1.00元 日元1日元1日元 英镑1.00英镑1,00英镑1.00英镑 巴西雷亚尔1.00至1.00雷亚尔1.00雷亚尔
FormatCurrency(1m,“USD”,“de”)
返回
“1,00$”
等等,但在任何语言环境中都不会区分
CN¥
JP¥
,或类似的内容。货币符号仍然是其本地语言环境使用的符号。您可以从中获得额外的货币信息。

您的代码,例如1.ToString(“C”,System.Globalization.CultureInfo.CreateSpecificCulture(“fr”)的输出为1,00欧元,“en-US”的结果是1.00美元您到底在尝试什么?我有1美元。我想将其格式化为区域设置fr-fr.
1.ToString(“C”,CultureInfo.CreateSpecificCulture(“fr-F”)‌​R”)
给出的“1,00欧元”是错误的货币。我想了解“1,00$”,这将有助于列出预期结果。对于fr,123,46欧元对于c#是正确的。在jquery中可能有所不同,但它是一种不同的语言。这不一定有你想要的文化(老实说,我不确定它是什么),但它确实表明你的结果是预期的行为。 Locale ----------------------------------------- 3-letter currency code | en (English) | de (German) | zh (Chinese) ---------------------- | ------------ | ----------- | ------------ USD | $1.00 | 1,00 $ | US$ 1.00 EUR | €1.00 | 1,00 € | € 1.00 CNY | CN¥1.00 | 1,00 CN¥ | ¥ 1.00 JPY | ¥1 | 1 ¥ | JP¥ 1 GBP | £1.00 | 1,00 £ | £ 1.00 BRL | R$1.00 | 1,00 R$ | R$ 1.00
 string FormatCurrency(decimal value, string currencyCode, string locale)
 {
     var culture = CultureInfo.CreateSpecificCulture(locale);
     var numberFormat = (NumberFormatInfo) culture.NumberFormat.Clone();
     var currencySymbol = CultureInfo.GetCultures(CultureTypes.AllCultures)
                                     .Where(ci => ci!=CultureInfo.InvariantCulture)
                                     .Select(c =>{try{return new RegionInfo(c.LCID);}
                                                  catch{return null;}})
                                     .Where(ri=>ri!=null &&
                                                ri.ISOCurrencySymbol==currencyCode)
                                     .Select(ri => ri.CurrencySymbol)
                                     .First();
     numberFormat.CurrencySymbol = currencySymbol;
     return value.ToString("C",numberFormat);
 }