Double ToString("C") 文化特定
Double ToString("C") culture specific
我知道这行得通 (source):
double x = 9.7;
x.ToString("C", CultureInfo.CreateSpecificCulture("nl-NL"));
但是我的代码后面有这段代码:
System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-GB");
在我的 aspx 网络表单中,我想使用 double.tostring("C")
,所以那里没有 cultureinfo。因为它是在当前线程上设置的。但是本地机器是nl-NL
。 CurrentThread 在后面的代码中设置为 en-GB,但 valutasign 仍然是欧元符号而不是英镑。
我错过了什么吗?还是在需要 cultureinfo 的情况下使用 tostring 的重载?换句话说,我是否必须重写所有 double tostrings 才能使用 cultureinfo?
确保在页面生命周期中足够快地初始化区域性。事实上,甚至有一个方法可以让你专门为此目的重写:Page.InitializeCulture
.
基于 cookie 的示例:
protected override void InitializeCulture()
{
var cookie = Request.Cookies[WebConfigurationManager.AppSettings["LocaleCookieName"]];
if (cookie != null)
Culture = UICulture = cookie.Value;
}
无需调用基方法,详见文档
我知道这行得通 (source):
double x = 9.7;
x.ToString("C", CultureInfo.CreateSpecificCulture("nl-NL"));
但是我的代码后面有这段代码:
System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-GB");
在我的 aspx 网络表单中,我想使用 double.tostring("C")
,所以那里没有 cultureinfo。因为它是在当前线程上设置的。但是本地机器是nl-NL
。 CurrentThread 在后面的代码中设置为 en-GB,但 valutasign 仍然是欧元符号而不是英镑。
我错过了什么吗?还是在需要 cultureinfo 的情况下使用 tostring 的重载?换句话说,我是否必须重写所有 double tostrings 才能使用 cultureinfo?
确保在页面生命周期中足够快地初始化区域性。事实上,甚至有一个方法可以让你专门为此目的重写:Page.InitializeCulture
.
基于 cookie 的示例:
protected override void InitializeCulture()
{
var cookie = Request.Cookies[WebConfigurationManager.AppSettings["LocaleCookieName"]];
if (cookie != null)
Culture = UICulture = cookie.Value;
}
无需调用基方法,详见文档