2012-11-12 12 views
19

Currency.getSymbol bana ana sembolü verir (örneğin USD için "$"), ancak kendi aramamı yazmadan küçük birimi (örn. GBP için "p" veya USD için sent sembolü) almak istiyorum. tablo.Java'daki para birimi alt birimi (azınlık birimi) sembolünü nasıl bulabilirim?

Standart yapmak, yani bunu yapmak için bir yol var mı?

+5

+1 Ben şüpheli. BTW, Tüm para birimlerinin küçük bir sembolü yoktur. Üç sent karakteri vardır: ¢, ¢ ve ₡ –

+1

+1 Aramaları uygulamak için [Ülke, bölge ve para birimi listesi] (http://publications.europa.eu/code/en/en-5000500.htm) kullanabilirsiniz. harita. – dan

+0

Şahsen, bu tür [ICU projesi] 'ne (http://site.icu-project.org/) veya [Joda-Money]' ye (http://joda-money.sourceforge.net/) bakıyorum. veri, ama her ikisi de bu belirli bilgi parçasından yoksun görünüyor. –

cevap

0

Bu durumun özel custom currency format'u kullanmasını öneriyorum. DecimalFormat ya danumaralı java.text.* paketini kullanın. Bunun için birçok örnek var.

Örnek

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 koyun:

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 

Referans here:

Güncelleme minör para birimi için

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); 

Çıktı:

Symbol is = £ 
+0

Bu, gönderenin sorusuna nasıl cevap veriyor? Görebildiğim kadarıyla, bu kod, küçük para birimini değil, her yerel ayar için ana para birimi simgesini çıkarır. –

+0

@RichardNeish, cevabı güncelledim. – CycDemo

+2

Üzgünüm, ama bence teklif veren alt birim için bir simge veya kod istiyor (örneğin USD için '¢' veya GBP için 'p'). Detaylar için http://stackoverflow.com/questions/5023754/do-minor-currency-units-have-a-iso-standard adresine bakın. Bu cevaba göre, bunlar için uluslararası bir standart yoktur. –