2012-11-01 15 views
5

Chcę uniknąć używania ustawień regionalnych i zamiast tego używać kodów walut (ISO 4217, np. "USD"). Rozumiem, jak ustawić klasę waluty za pomocą kodu waluty, jednak w jaki sposób mogę włączyć tę walutę do formatu NumberFormat, aby sformatować podwójną walutę?W jaki sposób mogę podać kod waluty ISO4217 w postaci NumberFormat?

Rozumiem oddzielnie NumberFormat i walutę, ale w jaki sposób mogę je połączyć, aby sformatować podwojenie w prawdziwe ciągi walut, takie jak 4,00 -> 4,00 USD? Muszę użyć NumberFormat, ponieważ zrzucam miejsca po przecinku, aby w tym przykładzie przedstawić liczby w walucie takie jak 4 USD.

Dziękuję za pomoc, Ryan

EDIT: Odpowiedź, .setCurrency, to jest to, czego nie zauważył w numberFormat, doh! Byłem zbyt skupiony na konstruowaniu NumberFormat z Walutą, ale walczyłem, ponieważ można budować tylko z Locale. Chciałbym o tym pomyśleć wcześniej. Dzięki! Następnym razem przeczytam metodę, która będzie dużo bliżej. ZNALAZŁEM NumberFormat MUSIAŁem poprzeć klasę walutową, sensownym było używanie Waluty w ten sposób.

+0

Proszę nie komentować mojego używania podwójnych walut, nie potrzebuję precyzji. Dzięki. – AutoM8R

Odpowiedz

3

Powinno to umożliwić wyświetlanie kwoty w danej walucie do najbliższej jednostki waluty. Nie testowałem tego, ale myślę, że to w 95% słuszne.

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

Czy próbowałeś następujący kod:

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

z kodu powyżej mam $4.00 i zakładam to jest to, czego oczekiwano.

Domyślam się, że najważniejszą rzeczą tutaj jest użycie NumberFormat.getCurrencyInstance() zamiast NumberFormat.getInstance().

+0

Dziękuję, kolejna ważna odpowiedź. Właśnie przegapiłeś fakt, że zrzucałem dziesiętne miejsca. – AutoM8R