2011-04-30 196 views
1

在C#代码Console.WriteLine("{0:c}", 998);中给出默认“US-Language”设置下的输出$998。但是,如果我想根据用户偏好动态地将我的货币符号更改为英镑,英镑,卢比或任何货币符号,有没有办法做到这一点。说,我打电话的方法:使用动态货币符号进行货币格式化

public void PrintInRightCurrencyFormat(decimal value, ICustomFormatter format) 
{ 
    Console.WriteLine(... ... ...); 
} 

而这种方法将打印所需的格式的值。

还有一件事是,有什么方法可以插入自定义货币符号。我的观点是,如果一种货币带有一个新的符号(就像印度对其卢比符号所做的那样),如何在代码中立即启用它。

谢谢大家提前。

+3

您可以通过'CultureInfo'做,但你需要照顾货币兑换; 50美元= 50卢比 – 2011-04-30 06:58:38

回答

3

你可以使用一个文化:

Console.WriteLine(string.Format(new CultureInfo("en-GB"), "{0:c}", value)); 

或者干脆设置当前线程的区域性一些用户的喜好,然后打印出值:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB"); 
Console.WriteLine("{0:c}", value); 
+3

+1不仅''你可以使用文化,你实际上'应该'!我建议在更普遍的层面上改变文化,也许在'web.config'或者Thread级别(http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.currentculture.aspx )。另外请注意,由于四舍五入的差异,货币应该存储为'decimal'而不是'double'。 – Bazzz 2011-04-30 06:52:14

+0

谢谢你的回答。你可以给一个链接,可以给予预定义的文化列表。 – 2011-04-30 06:56:21

+1

@Arnab Das,这里是一个:http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo(v=vs.71).aspx – 2011-04-30 06:59:23