2012-11-12 4 views
19

Currency.getSymbol poda mi główny symbol (np. "$" Za USD), ale chciałbym otrzymać jednostkę mniejszą (np. "P" za GBP lub symbol centów za USD), bez wpisywania własnego wyglądu stół.W jaki sposób mogę znaleźć symbol jednostki podjednostki walutowej (zwany także jednostką podrzędną) w Javie?

Czy istnieje standard, tj. Zbudowany w taki sposób, aby to zrobić?

+5

+1 Podejrzewam, że nie. BTW, nie wszystkie waluty mają pomniejszy symbol. Istnieją trzy centy znaków ¢, ¢ i ₡ –

+1

+1 Możesz użyć [Lista krajów, terytoriów i walut] (http://publications.europa.eu/code/en/en-5000500.htm), aby zaimplementować wyszukiwanie mapa. – dan

+0

Osobiście przyjrzałbym się [projektowi ICU] (http://site.icu-project.org/) lub [Joda-Money] (http://joda-money.sourceforge.net/) dla tego rodzaju danych, ale oba wydają się brakować tej konkretnej informacji. –

Odpowiedz

0

Chciałbym zasugerować, aby w tej sytuacji użyć niestandardowego custom currency format. Użyj pakietu DecimalFormat lub z . Jest na to wiele przykładów.

Przykład

public class CurrencyFormatExample { 
    public void currencyFormat(Locale currentLocale) { 
     Double currency = new Double(9843.21); 
     NumberFormat currencyFormatter; 
     String currencyOut; 
     currencyFormatter = NumberFormat.getCurrencyInstance(currentLocale); 
     currencyOut = currencyFormatter.format(currency); 
     System.out.println(currencyOut + " " + currentLocale.toString()); 
    } 

    public static void main(String args[]) { 
     Locale[] locales = new Locale[]{new Locale("fr", "FR"), 
      new Locale("de", "DE"), new Locale("ca", "CA"), 
      new Locale("rs", "RS"),new Locale("en", "IN") 
     }; 
     CurrencyFormatExample[] formate = new CurrencyFormatExample[locales.length]; 
     for (int i = 0; i < locales.length; i++) { 
      formate[i].currencyFormat(locales[i]); 
     } 
    } 
} 

Out umieścić:

9Â 843,21 â?¬ fr_FR 

9.843,21 â?¬ de_DE 

CAD 9.843,21 ca_CA 

RSD 9,843.21 rs_RS 

Rs.9,843.21 en_IN 

referencyjny here:

Aktualizacja dla drobnych walucie

Locale locale = Locale.UK; 
    Currency curr = Currency.getInstance(locale); 

    // get and print the symbol of the currency 
    String symbol = curr.getSymbol(locale); 
    System.out.println("Symbol is = " + symbol); 

Wyjście:

Symbol is = £ 
+0

Jak to odpowiada na pytanie osoby przesyłającej? O ile widzę, ten kod generuje główny symbol waluty dla każdego locale, a nie dla mniejszej waluty. –

+0

@RichardNeish, zaktualizowałem odpowiedź. – CycDemo

+2

Przepraszamy, ale myślę, że osoba przesyłająca prosi o podanie symbolu lub kodu dla podjednostki (takiej jak "¢" dla USD lub "p" dla GBP). Aby uzyskać szczegółowe informacje, zobacz odpowiedź http://stackoverflow.com/questions/5023754/do-minor-currency-units-have-a-iso-standard. Zgodnie z tą odpowiedzią, nie ma dla nich międzynarodowego standardu. –

Powiązane problemy