如何用C#格式化美式和欧式的数字?

时间:2012-10-24 13:02:35

标签: c# .net formatting

我希望能够格式化美国和欧洲风格的数字(双重类型)。根据用户的选择,编号123123123.456应格式化为:

  • 123,123,123.456 //美式格式
  • 123.123.123,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对象吗?或者也许还有其他解决方案而且我的方向错了?

2 个答案:

答案 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);
相关问题