我希望能够格式化美国和欧洲风格的数字(双重类型)。根据用户的选择,编号123123123.456应格式化为:
另一个要求是能够设置小数位数。我相信我可以使用double.ToString(string format, IFormatProvider provider)
并将"F2"
作为format
,但msdn似乎并没有多说IFormatProvider
,因为我解释说我可以自己实现它。 / p>
double x = 123123123.456
IFormatProvider myFormatProvider = whatToDo ?
x.ToString("F2", myFormatProvider); // I need 2 decimal digits hence F2
我可以为此目的使用任何预制数量的IFormatProvider对象吗?或者也许还有其他解决方案而且我的方向错了?
答案 0 :(得分:6)
IFormatProvider myFormatProvider = new CultureInfo("en-us").NumberFormat;
或
IFormatProvider myFormatProvider = new CultureInfo("fr").NumberFormat;
(这里只使用法国作为文化,但它几乎可以是任何欧洲国家)。
答案 1 :(得分:1)
IFormatProvider可以是CultureInfo:
double x = 123123123.456
System.Globalization.CultureInfo EnglishCulture = new System.Globalization.CultureInfo("en-EN");
x.ToString("F2",EnglishCulture);
或
x.ToString("F2",EnglishCulture.NumberFormat);