给定货币代码的C#格式化货币(如USD / GBP / FRF)

时间:2011-02-15 16:40:22

标签: c# formatting globalization currency

我正在与一个返回货币(System.Decimal)和货币代码的数据库集成。货币代码是"USD""GBP"甚至"FRF"等字符串。

mscorlib内置了哪些内容可以帮助我格式化这些货币?我首先考虑设置数据库货币代码和CultureInfo之间的映射,但我不知道如何处理FRF,因为如果我使用"fr-FR",它将格式化为欧元而不是法郎。 / p>

我们必须支持的完整货币符号列表是:

FRF
CHF
NZD
IN2
SAR
SEK
EUR
MXP
DKK
GBP
AUD
IN1
AED
CAD
NOK
INR
USD
PLN

3 个答案:

答案 0 :(得分:4)

  

我首先考虑在数据库货币代码和CultureInfo之间建立映射,但我不知道如何处理FRF,因为如果我使用“fr-FR”,它将格式化为欧元而不是法郎。

我会采用这种方法,但为FRF制作一个自定义IFormatProvider来执行您选择的格式化。这就像正确构建NumberFormatInfo一样简单。

答案 1 :(得分:3)

你可以replace the default currency并仍然使用框架......

using System;
using System.Globalization;
using System.Threading;
public class EuroLocalSample
{
   public static void Main()
   { 
     // Create a CultureInfo object for French in France.
     CultureInfo FrCulture = new CultureInfo("fr-FR");
     // Set the CurrentCulture to fr-FR.
     Thread.CurrentThread.CurrentCulture = FrCulture;
    // Clone the NumberFormatInfo object and create
    // a new object for the local currency of France.
    NumberFormatInfo LocalFormat =
    (NumberFormatInfo)NumberFormatInfo.CurrentInfo.Clone();
    // Replace the default currency symbol with the local
    // currency symbol.
    LocalFormat.CurrencySymbol = "F";

    int i = 100;

    // Display i formatted as the local currency.
    Console.WriteLine(i.ToString("c", LocalFormat));
    // Display i formatted as the default currency.
    Console.WriteLine(i.ToString("c", NumberFormatInfo.CurrentInfo));
   }
}

答案 2 :(得分:2)

这是一个非常小的清单。我只是手动设置映射。