Cod*_*ray 87
尝试使用货币格式说明符("C").它会自动考虑当前的UI文化并相应地显示货币值.
您可以将其与数字类型的任String.Format一ToString方法或重载方法一起使用.
例如:
double value = 12345.6789;
Console.WriteLine(value.ToString("C", CultureInfo.CurrentCulture));
Console.WriteLine(value.ToString("C3", CultureInfo.CurrentCulture));
Console.WriteLine(value.ToString("C3", CultureInfo.CreateSpecificCulture("da-DK")));
// The example displays the following output on a system whose
// current culture is English (United States):
// $12,345.68
// $12,345.679
// kr 12.345,679
Run Code Online (Sandbox Code Playgroud)
Ode*_*ded 29
这种功能是内置的.
使用小数时,您可以使用格式字符串 "C"或"c".
decimal dec = 123.00M;
string uk = dec.ToString("C", new CultureInfo("en-GB")); // uk holds "£123.00"
string us = dec.ToString("C", new CultureInfo("en-US")); // us holds "$123.00"
Run Code Online (Sandbox Code Playgroud)
获取给定数字并使用.ToString("C",culture)显示它的问题在于它有效地将金额更改为给定文化的默认货币.如果您有一个给定的金额,该金额的ISO货币代码,并且您希望为给定的文化显示它,我建议您只创建一个十进制扩展方法,如下所示.这不会自动假设货币是文化的默认货币:
public static string ToFormattedCurrencyString(
this decimal currencyAmount,
string isoCurrencyCode,
CultureInfo userCulture)
{
var userCurrencyCode = new RegionInfo(userCulture.Name).ISOCurrencySymbol;
if (userCurrencyCode == isoCurrencyCode)
{
return currencyAmount.ToString("C", userCulture);
}
return string.Format(
"{0} {1}",
isoCurrencyCode,
currencyAmount.ToString("N2", userCulture));
}
Run Code Online (Sandbox Code Playgroud)
这将使用本地货币符号或ISO货币代码与金额 - 以更合适的为准.有关此博客文章主题的更多信息.
| 归档时间: |
|
| 查看次数: |
111606 次 |
| 最近记录: |