【发布时间】:2011-08-26 07:46:50
【问题描述】:
en-ZA 地区的货币小数点和千位分隔符分别是“,”和“”,但常用的分隔符是“.”。对于十进制,加上我的用户想要','作为千位分隔符。我希望在全局范围内设置这些,这样我只需对我的所有货币字段使用{0:C} 格式字符串,而不必进行任何显式的Format 或ToString 调用。
我希望能够在不更改网络服务器上的文化设置的情况下执行此操作,因为我还需要将货币的小数位设置为零,因为在报告 R100k 及以上的估计值时不需要美分等. 我不想随意将整个文化设置为零位,只为这个应用程序设置一个。
在他对this question 的回答中,Jon Skeet 建议克隆当前的文化和设置并更改所需的设置。我已经这样做了:
void Application_Start(object sender, EventArgs e)
{
var newCulture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
newCulture.NumberFormat.CurrencyDecimalSeparator = ".";
newCulture.NumberFormat.CurrencyGroupSeparator = ",";
}
但是,如何为应用程序从此时开始处理的所有请求激活这种新文化?还有其他方法可以实现我想做的事情吗?
【问题讨论】:
标签: .net asp.net internationalization formatting cultureinfo