2012-11-12 8 views
19

Currency.getSymbol sẽ cho tôi biểu tượng chính (ví dụ: "$" cho USD) nhưng tôi muốn lấy đơn vị nhỏ (ví dụ "p" cho biểu tượng GBP hoặc cent cho USD), mà không cần viết cái nhìn của riêng tôi bàn.Làm thế nào tôi có thể tìm ra biểu tượng đơn vị tiền tệ phụ (đơn vị nhỏ) trong Java?

Có tiêu chuẩn, tức là được xây dựng theo cách để thực hiện việc này không?

+5

+1 Tôi nghi ngờ là không. BTW, Không phải tất cả các loại tiền tệ đều có một biểu tượng nhỏ. Có ba ký tự cent ¢, ¢ và ₡ –

+1

+1 Bạn có thể sử dụng [Danh sách các quốc gia, lãnh thổ và tiền tệ] (http://publications.europa.eu/code/en/en-5000500.htm) để thực hiện tra cứu bản đồ. – dan

+0

Cá nhân tôi xem [dự án ICU] (http://site.icu-project.org/) hoặc [Joda-Money] (http://joda-money.sourceforge.net/) cho loại này dữ liệu, nhưng cả hai dường như thiếu thông tin cụ thể này. –

Trả lời

0

Tôi muốn đề xuất cho trường hợp này sử dụng tùy chỉnh custom currency format. Sử dụng gói DecimalFormat hoặc NumberFormat trong số java.text.*. Có rất nhiều ví dụ cho điều đó.

Ví dụ

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 đặt:

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 

Reference here:

Cập nhật cho đồng tiền nhỏ

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

Đầu ra:

Symbol is = £ 
+0

Làm cách nào để trả lời câu hỏi của người gửi? Theo như tôi có thể thấy, mã này xuất ra ký hiệu tiền tệ chính cho từng miền địa phương, không phải loại tiền tệ nhỏ. –

+0

@RichardNeish, tôi đã cập nhật câu trả lời. – CycDemo

+2

Xin lỗi, nhưng tôi nghĩ người gửi yêu cầu một biểu tượng hoặc mã cho đơn vị phụ (chẳng hạn như '¢' cho USD hoặc 'p' cho GBP). Xem câu trả lời http://stackoverflow.com/questions/5023754/do-minor-currency-units-have-a-iso-standard để biết chi tiết. Theo câu trả lời đó, không có tiêu chuẩn quốc tế cho việc này. –