2012-10-24 82 views
0

我希望能夠格式化美式和歐式風格的數字(雙精度型)。根據用戶的選擇數量123123123.456應該被格式化爲:如何在C#中以美式和歐式風格格式化數字?

  • 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 

是否有任何預編號的IFormatProvider對象可用於該目的?或者也許有其他解決方案,我會錯誤的方式?

+0

我在歐洲(英國),我們會寫123,123,123.456 –

+0

就顯示爲一串數字,並格式化字符串,基於用戶的偏好。這個問題顯示出完全缺乏研究。 –

+2

@李泰勒:好吧,你們英國人很難稱得上是真正的歐洲人,對嗎? ;-) –

回答

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

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

(只用法國作爲這裏的文化,但它可能是幾乎任何一個歐洲國家)。

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);