2009-05-12 2 views
14

Wie formatieren Sie die Währung, wenn Sie eine Währung formatieren, die nicht die Währung der aktuellen Kultur ist?Das richtige Währungsformat, wenn die native Währung einer Kultur nicht angezeigt wird

Zum Beispiel, wenn ich US-Dollars an Formatierung für eine fr-FR Kultur formatiere ich es wie eine Kultur en-US ($ 1,000.00) oder als fr-FR Kultur, sondern das Euro-Symbol auf einen US-Dollar zu ändern Symbol (1 000,00 $). Vielleicht etwas anderes ($ 1 000,00 oder 1 000,00 USD)?

+0

Sollte dies auf einer anderen SE-Website gehört nicht ... vielleicht Economics SE? http://economics.stackexchange.com/ Wie hängt diese Frage mit dem Umfang von StackOverflow zusammen? – rayryeng

Antwort

27

Es gibt keine absoluten Regeln hier aber ein paar Leitprinzipien:

  1. Versuchen und verwenden Sie das Zahlenformat für das Gebietsschema (zB 1.000,00 in den USA als 1'000,00 in Deutschland angezeigt werden würde);
  2. Denken Sie daran, dass verschiedene Währungen das gleiche Symbol verwenden können (zB $ wird von Australischen und US-Dollar verwendet) und dass es many currency symbols gibt;
  3. Wenn Ihre Website "single" Währung ist, dann verwenden Sie einfach das richtige Symbol für diese Währung. Darunter verstehe ich Websites wie Amazon, Reise-Websites, Shopping-Sites und so weiter. Diese Seiten sind einheitliche Währung in dem Sinne, sie sind eine Währung zu einer Zeit. Sie werden zum Beispiel keine malaysischen Ringits und Singapur-Dollars gleichzeitig anzeigen; und
  4. Wenn Ihre Website mehrere Währungen hat, dann verwenden Sie das Symbol überhaupt nicht: Verwenden Sie den Währungscode mit dem internationalen Standard aus drei Buchstaben, wie von ISO 4217 currency names and code elements definiert. Sites wie xe.com passen in die Kategorie.
+0

Gelöschte meine ursprüngliche Antwort, da dies besser ist +1 – da5id

+0

Sehr klarer Hinweis - Für die Punkte # 1 und # 2 überprüfen Sie hier, wie Sie dies in C# http://stackoverflow.com/questions/1071273/currency-formatting/1071302 tun – Ryan

0

Wenn Sie immer das Symbol angezeigt werden sollen, hier ist eine Utility-Klasse:

public class Utils { 

    public static SortedMap<Currency, Locale> currencyLocaleMap; 

    static { 
     currencyLocaleMap = new TreeMap<Currency, Locale>(new Comparator<Currency>() { 
      @Override 
      public int compare(Currency c1, Currency c2) { 
       return c1.getCurrencyCode().compareTo(c2.getCurrencyCode()); 
      } 
     }); 

     for (Locale locale : Locale.getAvailableLocales()) { 
      try { 
       Currency currency = Currency.getInstance(locale); 
       currencyLocaleMap.put(currency, locale); 
      } 
      catch (Exception e) { 
      } 
     } 
    } 


    public static String getAmountAsFormattedString(Double amount, Double decimals, String currencyCode) { 
     Currency currency = Currency.getInstance(currencyCode); 
     double doubleBalance = 0.00; 
     if (amount != null) { 
      doubleBalance = ((Double) amount)/(Math.pow(10.0, decimals)); 
     } 
     NumberFormat numberFormat = NumberFormat.getCurrencyInstance(currencyLocaleMap.get(currency)); 
     return numberFormat.format(doubleBalance); 
    } 

    public static String getCurrencySymbol(String currencyCode) { 
     Currency currency = Currency.getInstance(currencyCode); 
     return currency.getSymbol(currencyLocaleMap.get(currency)); 
    } 


} 
Verwandte Themen