2012-06-29 42 views

回答

9
var stringValue = Convert.ToDecimal(value).ToString("$0.00"); 

正如下面的@James所指出的,這將貨幣硬編碼爲格式。使用格式C2將使用系統貨幣格式。這可以針對系統進行更改(例如在Windows 7 - 開始 - 控制面板 - 更改顯示語言 - 附加設置 - 貨幣 - 數字分組中),並允許C2格式在特定系統上運行時顯示不帶逗號的貨幣值。

編輯

所有信貸@詹姆斯利用當前的文化。我對他的答案的唯一修改是克隆當前的NumberFormat,以便在刪除CurrencyGroupSeparator之前獲得當前文化編號格式的所有屬性。

var formatInfo = (NumberFormatInfo)CultureInfo.CurrentCulture.NumberFormat.Clone(); 
formatInfo.CurrencyGroupSeparator = string.Empty; 

var stringValue = Convert.ToDecimal(value).ToString("C", formatInfo); 
+0

是的就是這樣! 8分鐘後將被接受:) –

+2

雖然它有效,但它不是一個靈活的解決方案,即您將貨幣符號硬編碼爲美元。 – James

+0

有沒有辦法將這個stringValue轉換回數字? – Micro

4

您應該使用NumberFormat類指定格式的你需要的類型,ToString需要一個IFormatProvider參數例如

var formatInfo = (System.Globalization.NumberFormatInfo)CultureInfo.CurrentCulture.NumberFormat.Clone(); 
formatInfo.CurrencyGroupSeparator = ""; // remove the group separator 
Console.WriteLine(2.ToString("C", formatInfo)); 
Console.WriteLine(4.ToString("C", formatInfo)); 
Console.WriteLine(1000.ToString("C", formatInfo)); 

這將使您的數字格式與您使用的文化保持一致。

+0

+1給你!比我的答案更好的解決方案。 –

+1

也許使用'var formatInfo =(NumberFormatInfo)CultureInfo.CurrentCulture.NumberFormat.Clone();'而不是創建一個新的'NumberFormatInfo'?這樣你將確保你有當前文化的完整數字格式。 –

+0

@Kevin +1是的完整性,這將是一個更好的解決方案。將更新我的答案。 – James

2
public static class MyExtensions 
{ 
    public static string GetMoney(this decimal value, bool displayCurrency = false, bool displayPeriods = true) 
    { 
     string ret = string.Format("{0:C}", value).Substring(displayCurrency ? 0 : 1); 
     if (!displayPeriods) 
     { 
      ret = ret.Replace(",", string.Empty); 
     } 
     return ret; 
    } 
} 

要使用該擴展方法:

decimal test = 40023.2345M; 
string myValue = test.GetMoney(displayCurrency:true, displayPeriods:false);` 
0

整數值轉換成$ 0.00包裝格式

int值= 1000; string abc = Convert.ToDecimal(Value).ToString(「$ 0.00」); 輸出將是$ 1000.00