2013-02-06 63 views
0

在C#中,我試圖根據計算機上的設置格式化一個金額。根據C#中計算機設置的格式編號(金額)

因此,例如,如果en-US上的設置是xxxx.xx(用點分隔)並且在nb-NO中它是xxxx.xx(用逗號分隔),我想自動檢測並格式化數額相應。

感謝您的幫助提前。

+0

您的意思是貨幣? – Cris

+0

是的,這是正確的:-) –

+0

可能重複的[double.TryParse在荷蘭](http://stackoverflow.com/questions/905754/double-tryparse-in-dutch) –

回答

0

試試這個

double amount = xxxx.xx; 
string formattedCurrency=amount.ToString("C", CultureInfo.CurrentCulture); 
+0

嗨。 我得到此錯誤: Document.LoadScript :: c:\ Documents and Settings \ Administrator \ Local Settings \ Temp \ CSSCRIPT \ tmp56.tmp(17,20):錯誤CS0029:無法隱式地將類型'字符串'轉換爲'雙' c:\ Documents and Settings \ Administrator \ Local Settings \ Temp \ CSSCRIPT \ tmp56.tmp(24,20):錯誤CS0029:無法將類型'字符串'隱式轉換爲'雙' c:\ Documents and設置\管理員\本地設置\溫度\ CSSCRIPT \ tmp56.tmp(30,20):錯誤CS0029:不能隱式轉換類型'字符串'爲'雙' –

+0

我猜你正在使用這樣的事情double amount =「1234.56」,在這種情況下不要使用雙數據類型,請使用字符串 – Cris

0

您可以使用兩個接口的IFormatProvider,ICustomFormatter,以創建格式: 公共類TestConvertor:的IFormatProvider,ICustomFormatter { 公共對象的getFormat(類型formatType) { 如果(formatType == typeof運算(ICustomFormatter)) 返回此; 返回null; }

public string Format(string format, object arg, IFormatProvider formatProvider) 
    { 
     decimal amount = arg is decimal ? (decimal) arg : 0; 
     return amount.ToString("C", CultureInfo.CurrentCulture); 

    } 
} 
class Program 
{ 
    static void Main(string[] args) 
    { 
     double amount = 2541.25; 
     var f = string.Format(new TestConvertor(), "{0:Currency}", 2545); 
     Console.WriteLine(f); 
     Console.ReadKey(); 

    } 
}