String.Format是否有两种工作方式: 如果我们使用内置格式,如C,N,P ....它会考虑区域设置吗? 如果我们使用自定义格式代码,例如#,## 0.000,它不会考虑区域设置吗?
在我的代码中,我使用这样的方法
String.Format(“{0:#。## 0,000}”,value);
因为我的国家/地区使用逗号作为小数点分隔符
但结果仍然是:1,234.500,好像它将点视为小数点分隔符。
请帮忙!
答案 0 :(得分:18)
您想使用CultureInfo:
value.ToString("N", new CultureInfo("vn-VN"));
String.Format(new CultureInfo("vi-VN"), "N", value);
由于你在河内(来自个人资料),我使用的是越南代码,vn-VN
。
答案 1 :(得分:3)
这很有效。
IFormatProvider iFormatProvider = new System.Globalization.CultureInfo("es-ES");
string s = value.ToString("#,##0.000", iFormatProvider);
string s2 = string.Format(iFormatProvider, "{0:#,##0.000}", val)
请注意,,
和.
使用的是“标准”en-US样式,但.ToString()
和string.Format()
使用格式提供程序是正确的。< / p>
答案 2 :(得分:0)
您应确保您的线程使用正确的区域性:
Thread.CurrentThread.CurrentCulture = CultureInfo.CurrentCulture
Thread.CurrentThread.CurrentUICulture = CultureInfo.CurrentCulture
FrameworkElement.LanguageProperty.OverrideMetadata(GetType(FrameworkElement), New FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)))