2012-11-01 8 views
5

Voglio evitare di utilizzare le impostazioni locali e utilizzare invece i codici valuta (ISO 4217, come "USD"). Capisco come impostare una classe di valuta con il codice di valuta, tuttavia, come potrei incorporare questa valuta per dire un NumberFormat per formattare un doppio rispetto a detta valuta?Come posso inserire un codice valuta ISO4217 in un formato numerico?

Capisco sia NumberFormat che Currency separatamente, ma come posso combinarli per formattare i doppi in stringhe di valuta reale come 4.00 -> $ 4.00? Devo usare NumberFormat, perché faccio cadere le cifre decimali per fare cifre in valuta intera come $ 4 in questo esempio.

Grazie per il vostro aiuto, Ryan

EDIT: risposta, .setCurrency, questo è quello che non ho notato in NumberFormat, doh! Ero troppo concentrato sulla costruzione del NumberFormat con la valuta, ma stavo lottando come puoi costruire solo da una Locale. Vorrei averlo pensato prima. Grazie! La prossima volta leggerò il metodo elencandolo più vicino. I KNEW NumberFormat HAD per supportare una classe di valuta, aveva senso usare la valuta in questo modo.

+0

E per favore non commentare il mio uso di Doubles for currency, non ho bisogno di precisione. Grazie. – AutoM8R

risposta

3

Questo dovrebbe consentire di visualizzare un importo in una data valuta per l'intera unità di valuta più vicina. Non l'ho provato ma penso che sia al 95% giusto.

double amount = ...; 
String currencyCode = ...; 
Currency currency = Currency.getInstance(currencyCode); 
NumberFormat format = NumberFormat.getCurrencyInstance(); 
format.setMaximumFractionDigits(0); 
format.setCurrency(currency); 
String formattedAmount = format.format(amount); 
2

Hai provato il seguente codice:

NumberFormat nf = NumberFormat.getCurrencyInstance(); 
    String currencyCode = "USD"; 
    nf.setCurrency(Currency.getInstance(currencyCode)); 
    double currencyAmmount = 4.00; 
    String formattedValue= nf.format(currencyAmmount); 

Dal codice di cui sopra ho ottenuto $4.00 e presumo questo è quello che ti aspettavi.

Immagino che la cosa più importante qui sia usare NumberFormat.getCurrencyInstance() invece di NumberFormat.getInstance().

+0

Grazie, un'altra risposta valida. Hai appena perso il fatto che stavo lasciando cadere i decimali. – AutoM8R

Problemi correlati