1

我希望能够以美国和欧洲风格格式化一个数字(双精度型)。根据用户的选择,数字 123123123.456 应格式化为:

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

另一个要求是能够设置小数位数。我相信我可以使用double.ToString(string format, IFormatProvider provider)和 put "F2"as theformat但是 msdn 似乎并没有说明太多关IFormatProvider​​于解释我可以自己实现它的信息。

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

是否有任何预制编号的 IFormatProvider 对象可以用于该目的?或者也许还有其他解决方案,我走错路了?

4

2 回答 2

8
IFormatProvider myFormatProvider = new CultureInfo("en-us").NumberFormat;

或者

IFormatProvider myFormatProvider = new CultureInfo("fr").NumberFormat;

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

于 2012-10-24T13:05:17.987 回答
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);
于 2012-10-24T13:06:50.500 回答