C # форматирование валюты с указанием кода валюты (например, USD / GBP / FRF) - PullRequest
2 голосов
/ 15 февраля 2011

Я интегрируюсь с базой данных, которая возвращает валюты (System.Decimal) и коды валют. Коды валют - это строки типа "USD", "GBP" и даже "FRF".

Есть ли что-то встроенное в mscorlib, которое может помочь мне отформатировать эти валюты? Сначала я подумал о настройке отображения между кодом валюты базы данных и CultureInfo, но я не знаю, что делать с FRF, потому что если я использую "fr-FR", он будет форматироваться как евро, а не как франки.

Полный список символов валюты, которые мы должны поддерживать:

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

Ответы [ 3 ]

4 голосов
/ 15 февраля 2011

Сначала я подумал о настройке отображения между кодом валюты базы данных и CultureInfo, но я не знаю, что делать с FRF, потому что, если я использую "fr-FR", он будет форматироваться как евро, а не как франки.

Я бы воспользовался этим подходом, но сделал бы пользовательский IFormatProvider для FRF, который выполняет форматирование, которое вы выбираете. Это так же просто, как правильно построить NumberFormatInfo .

3 голосов
/ 15 февраля 2011

Вы можете заменить валюту по умолчанию и по-прежнему использовать каркас ...

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 голосов
/ 15 февраля 2011

Это довольно маленький список. Я бы просто настроил сопоставления вручную.

...