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

jak*_*zon 1 .net c# formatting

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

  • 123,123,123.456 //美国格式
  • 123.123.123,456 //欧洲格式

另一个要求是能够设置小数位数.我相信我可以使用double.ToString(string format, IFormatProvider provider)和放置"F2",format但msdn似乎并没有IFormatProvider说明分别解释我可以自己实现它.

double x = 123123123.456
IFormatProvider myFormatProvider = whatToDo ?
x.ToString("F2", myFormatProvider); // I need 2 decimal digits hence F2
Run Code Online (Sandbox Code Playgroud)

我可以为此目的使用任何预制数量的IFormatProvider对象吗?或者也许还有其他解决方案而且我的方向错了?

Roy*_*tus 7

IFormatProvider myFormatProvider = new CultureInfo("en-us").NumberFormat;
Run Code Online (Sandbox Code Playgroud)

要么

IFormatProvider myFormatProvider = new CultureInfo("fr").NumberFormat;
Run Code Online (Sandbox Code Playgroud)

(这里只使用法国作为文化,但几乎可以是任何欧洲国家).