2009-06-19 39 views
4

我使用下面显示的量:经由代码在C#改变货币

的String.Format( “{0:C}”,item.Amount)

该显示£9.99

如果我希望应用程序能够控制货币,并能够将货币改为一天它是没问题,但什么

$ 9.99加入

如何更改货币格式通过代码

+0

不要忘记,您需要单独存储价格,或允许(随时间变化)汇率 - 否则,我会以美元订购英镑信用卡:) – 2009-06-19 09:58:36

回答

4

指定所述呼叫中的文化Format

decimal value = 123.45M; 
    CultureInfo us = CultureInfo.GetCultureInfo("en-US"); 
    string s = string.Format(us, "{0:C}", value); 
1
CultureInfo info = new CultureInfo (System.Threading.Thread.CurrentThread.CurrentCulture.LCID); 
info.NumberFormat.CurrencySymbol = "EUR"; 

System.Threading.Thread.CurrentThread.CurrentCulture = info; 

Console.WriteLine (String.Format ("{0:C}", 45M)); 

NumberFormatInfo info = new NumberFormatInfo(); 
info.CurrencySymbol = "EUR"; 

Console.WriteLine (String.Format (info, "{0:C}", 45M)); 
+3

You shouldn不改变当前的文化只是为了格式化一个号码... – 2009-06-19 09:49:27

+0

这是正确的,你不应该改变线程的当前文化,特别是不要简单地改变货币符号。使用CultureInfo.GetCultureInfo(“文化字符串”)来获取适当的文化信息(以及所有格式设置)。 – Groo 2009-06-19 09:55:23

13

货币符号由CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol定义。该属性为读/写,但如果你试图改变它,因为NumberFormatInfo.IsReadOnly会是真的,你可能会得到一个异常...

或者,你可以通过明确使用特定的NumberFormatInfo格式化数字:

NumberFormatInfo nfi = (NumberFormatInfo)CultureInfo.CurrentCulture.NumberFormat.Clone(); 
nfi.CurrencySymbol = "$"; 
String.Format(nfi, "{0:C}", item.Amount); 
0

如果您更改显示的金额货币,那么您也正在更改其计量单位。 £1 <>€1 <> $ 1。你在这里的业务需求绝对是肯定