2011-03-25 263 views
0

在下面的示例中,逗號是小數點分隔符。格式化貨幣

我有這樣的:125456,89

我想有這樣的:125.456,89;其他爲例:23456789,89 => 23.456.789,89

感謝,

+0

什麼文化,這是,什麼是你輸入的類型? – 2011-03-25 07:56:13

+0

法國文化,但格式必須不取決於區域設置 – 2011-03-25 08:28:58

回答

1

平時要格式化數字作爲一種貨幣,你應該使用 「C」 格式說明:

string formatted = price.ToString("c"); 

那將使用當前線程的默認文化來確定格式化規則,但是如果需要,您可以明確指定它。

如果沒有幫助,請給我們更多的信息,並閱讀這兩個網頁:

編輯:從您的評論,這聽起來像你要麼要指定一個明確的自定義數字格式字符串,建立自己的NumberFormatInfo對象(這只是在克隆現有屬性後設置屬性的問題)並將其傳遞給格式化調用。

+0

Jon,在數字之前是否有可能沒有€(在我的情況下)? – 2011-03-25 10:40:25

+0

@ Kris-I:您可以嘗試將貨幣符號更改爲「」(對於自定義的NumericFormatInfo)。 – 2011-03-25 10:40:47

2

看看這個例子

double value = 12345.6789; 
Console.WriteLine(value.ToString("C", CultureInfo.CurrentCulture)); 

Console.WriteLine(value.ToString("C3", CultureInfo.CurrentCulture)); 

Console.WriteLine(value.ToString("C3", 

       CultureInfo.CreateSpecificCulture("da-DK"))); 

// The example displays the following output on a system whose 
// current culture is English (United States): 
//  $12,345.68 
//  $12,345.679 
//  kr 12.345,679 
+0

有關CurrencyDecimalSeparator和格式的更多信息,您可以查看NumberFormatInfo類http://msdn.microsoft.com/en-us/library/2xdwt6xx.aspx – Serghei 2011-03-25 08:09:37

1

您可以使用此:

125456.89.ToString("#,###.00") 

它會自動使用正確的小數點和組分隔符當前區域性。它與迄今爲止的其他解決方案不同之處在於它不會自動附加貨幣符號。

+0

幾乎不錯,當我有12546,00我希望看到12.456 ,00當我使用它時我有12.456 – 2011-03-25 08:26:18

+0

@ Kris-I:改變了我的答案,看看 – 2011-03-25 08:30:28

0

another post

引用創建一個自定義的NumberFormatInfo實例,並調用toString()時傳遞英寸

NumberFormatInfo nfi = new NumberFormatInfo(); 
nfi.NumberGroupSeparator = "."; 
nfi.NumberDecimalSeparator = ","; 

double s = 219171; 
string result = s.ToString("N2", nfi); 

的NumberFormatInfo屬於System.Globalization