Używam NumberFormat.getCurrencyInstance().format(amount)
do formatowania waluty z BigDecimal na ciąg znaków. Działa to zgodnie z oczekiwaniami, ponieważ naszym głównym celem jest rynek holenderski, a domyślne formatowanie holenderskie jest dziwne.Ustawienia lokalne Java zastępują określone ustawienia narodowe
Pozwolę sobie wyjaśnić, że podczas formatowania -125 otrzymuję "€ 125-" dla języka holenderskiego (oczekiwano "- 125 EUR"). Uk działa zgodnie z oczekiwaniami, podając "- £ 125.50".
Mogę sprawdzić, czy lokalizacja jest holenderska, a następnie podać wzór za każdym razem, gdy chcę sformatować miejsca dziesiętne. Ale wolałbym rozwiązanie, które zastępuje holenderskie ustawienia formatowania. Pomyślałem o czymś podobnym:
Locale nlLocale = new Locale("nl", "NL");
NumberFormat.getCurrencyInstance(new Locale("nl", "NL")).setFormatPattern("€ #");
Tak, że za każdym razem, gdy używam ustawień regionalnych podczas formatowania, otrzymuję niestandardowy format. Czy istnieje podobne rozwiązanie?
Dlaczego chcesz zmienić formatowanie holenderskiej? Czy nie pomylisz ich, wybierając niestandardową opcję formatowania (dla holenderskiego). – Dunes
Używam [zamknij] (http://www.java2s.com/Open-Source/Android/android-core/platform-libcore/libcore/java/text/OldNumberFormatTest.java.htm)/[similair] (http://www.java2s.com/Tutorial/Java/0040__Data-Type/Helperclassforformatnumberandcurrency.htm) klasy dla Swing GUI, możesz być w stanie stworzyć własną macierz dla liczby jako frakcji zbyt – mKorbel
@Dunes użytkownicy oczekują innego formatu niż java zapewnia holenderski (symbol minus powinien znajdować się przed numerem, a nie za nim). mKorbel, myślałem o zawinięciu każdego wezwania do sformatowania, to będzie moja ostatnia deska ratunku, ale mam nadzieję, że mogę po prostu przesłonić niektóre ustawienia dla określonych lokalizacji – Rob