货币格式 C# ISOCurrencySymbol
Currency format C# ISOCurrencySymbol
我通常只使用这个:
double test = 1234.5678;
Console.WriteLine(test.ToString("C"));
效果很好。我有一个 "overwrite" 加元,以确保人们会看到美元和加元之间的区别:
var canadaFi = (NumberFormatInfo)CultureInfo.GetCultureInfo("en-CA").NumberFormat.Clone();
canadaFi.CurrencySymbol = "C$ ";
Console.WriteLine(val.ToString("C", canadaFi));
但现在人们要求输出如下:
CAD 1234,56
所以我用了:
RegionInfo ca = new RegionInfo("en-CA");
Console.WriteLine(string.Format("{0} {1}", ca.ISOCurrencySymbol, test.ToString("f2")));
这行得通,但我想知道这是否是在 float/double 前面获取 3 个字符的 iso 货币符号的最佳方法。
所以我现在必须使用 RegionInfo
而不是 CultureInfo
?
正如@Corak 解释的那样:
CultureInfo cai = new CultureInfo("en-CA");
RegionInfo ca = new RegionInfo("en-CA");
Console.WriteLine(ca.ISOCurrencySymbol + " " + test.ToString("C", cai).Substring(1));
输出:
CAD 1,234.57
添加了@Coraks 建议:
Console.WriteLine(ca.ISOCurrencySymbol + " " + test.ToString("C", cai).Replace(cai.CurrencySymbol, ""));
正确的方法是:
const string canada = "en-CA";
var ca = new RegionInfo(canada);
var cai = new CultureInfo(canada)
{
NumberFormat =
{
CurrencySymbol = ca.ISOCurrencySymbol,
CurrencyPositivePattern = 2,
CurrencyNegativePattern = 12
}
};
Console.WriteLine(test.ToString("C", cai));
如果您设置 CurrencyPositivePattern = 2
,请确保该符号位于数字前面,并带有一个额外的空 space(另请参见 documentation for CurrencyPositivePattern), CurrencyNegativePattern = 12
does the same for negative values (documentation for CurrencyNegativePattern)。
输出:
CAD 1,234.57
和否定
CAD -1,234.57
我通常只使用这个:
double test = 1234.5678;
Console.WriteLine(test.ToString("C"));
效果很好。我有一个 "overwrite" 加元,以确保人们会看到美元和加元之间的区别:
var canadaFi = (NumberFormatInfo)CultureInfo.GetCultureInfo("en-CA").NumberFormat.Clone();
canadaFi.CurrencySymbol = "C$ ";
Console.WriteLine(val.ToString("C", canadaFi));
但现在人们要求输出如下:
CAD 1234,56
所以我用了:
RegionInfo ca = new RegionInfo("en-CA");
Console.WriteLine(string.Format("{0} {1}", ca.ISOCurrencySymbol, test.ToString("f2")));
这行得通,但我想知道这是否是在 float/double 前面获取 3 个字符的 iso 货币符号的最佳方法。
所以我现在必须使用 RegionInfo
而不是 CultureInfo
?
正如@Corak 解释的那样:
CultureInfo cai = new CultureInfo("en-CA");
RegionInfo ca = new RegionInfo("en-CA");
Console.WriteLine(ca.ISOCurrencySymbol + " " + test.ToString("C", cai).Substring(1));
输出:
CAD 1,234.57
添加了@Coraks 建议:
Console.WriteLine(ca.ISOCurrencySymbol + " " + test.ToString("C", cai).Replace(cai.CurrencySymbol, ""));
正确的方法是:
const string canada = "en-CA";
var ca = new RegionInfo(canada);
var cai = new CultureInfo(canada)
{
NumberFormat =
{
CurrencySymbol = ca.ISOCurrencySymbol,
CurrencyPositivePattern = 2,
CurrencyNegativePattern = 12
}
};
Console.WriteLine(test.ToString("C", cai));
如果您设置 CurrencyPositivePattern = 2
,请确保该符号位于数字前面,并带有一个额外的空 space(另请参见 documentation for CurrencyPositivePattern), CurrencyNegativePattern = 12
does the same for negative values (documentation for CurrencyNegativePattern)。
输出:
CAD 1,234.57
和否定
CAD -1,234.57