2010-03-30 49 views
13

Tôi muốn có định dạng tiền tệ của Ấn Độ, vì vậy tôi cần đối tượng Locale cho Ấn Độ. Nhưng chỉ tồn tại một vài quốc gia có hằng số Locale (một số static final Locale) và Ấn Độ không phải là một trong số đó.Lấy định dạng đơn vị tiền tệ cho quốc gia không có hằng số Locale

Để có được ký hiệu tiền tệ đối với Mỹ và Anh, tôi có thể làm như sau:

public void displayCurrencySymbols() { 

    Currency currency = Currency.getInstance(Locale.US); 
    System.out.println("United States: " + currency.getSymbol()); 

    currency = Currency.getInstance(Locale.UK); 
    System.out.println("United Kingdom: " + currency.getSymbol()); 

} 

Đó sử dụng hằng Locale.USLocale.UK. Nếu tôi muốn lấy định dạng tiền tệ Ấn Độ, tôi có thể làm gì?

+0

@Thilo: Làm cách nào để triển khai? – Venkat

+0

@Thilo: Nó hoạt động tốt. Cảm ơn rất nhiều .. – Venkat

+0

@Venkats: đặt nhận xét này dưới câu trả lời của anh ấy hoặc anh ấy sẽ không nhìn thấy nó. –

Trả lời

14

Theo số JDK release notes, bạn có mã miền địa phương hi_IN (Hindi) và en_IN (tiếng Anh).

System.out.println(Currency.getInstance(new Locale("hi", "IN")).getSymbol()); 
+0

@Thilo: Nó hoạt động tốt. Cảm ơn rất nhiều .. – Venkat

+0

Điều quan trọng là 1) Lớp 'Locale' không phải là tập hợp các giá trị không đổi; nó cũng có các nhà xây dựng. 2) Tất cả nó là một định danh cho một miền địa phương; công việc thực tế được thực hiện trong 'Currency.getInstance()'. – Raedwald

0

Dưới đây là một phương pháp hữu ích để có biểu tượng, bất kể là locale

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 getCurrencySymbol(String currencyCode) { 
      Currency currency = Currency.getInstance(currencyCode); 
      return currency.getSymbol(currencyLocaleMap.get(currency)); 
     } 

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


    } 
9

bạn heres là điều đơn giản u có thể làm,

float amount = 100000; 

    NumberFormat formatter = NumberFormat.getCurrencyInstance(new Locale("en", "IN")); 

    String moneyString = formatter.format(amount); 

    System.out.println(moneyString); 

Sản lượng sẽ là Rs.100,000.00.

+0

Tôi đã thử nghiệm nó. Điều này hoạt động tốt. – sebadagostino

+0

Nó hoạt động tốt. Nhưng tôi thích có biểu tượng rupee thay vì Rs. Bất kỳ cách giải quyết nhanh nào? – Anand

Các vấn đề liên quan