NumberFormat w dwóch kierunkach

0

Witam. Formatuje liczbe na postać walutową:
NumberFormat formator = NumberFormat.getCurrencyInstance(Locale.getDefault());
Jak moge to przeformatować z powrotem na postać czysto liczbową?

--
Miłosz

0

najpierw wytnij wszystkie znaki które nie są liczbami (zostaw , ) za pomocą wyrażenia regularnego, a następnie użyj odpowiedniej funkcji by sparsować String na liczbę:

Integer.parseInteger(String); Double.parseDouble(String)
0

yyyyyyy?

NumberFormat f = NumberFormat.getCurrencyInstance();
System.out.println(f.format(5.9)); // pisze: 5,9 zł
//w gruga storne (pamietac o ParseException
System.out.println(f.parseObject("5,9 zł"));

to by bylo chyba czystsze rozwiazanie?

0

@mamalyga, ok ale już coś takiego:

NumberFormat f = NumberFormat.getCurrencyInstance();
System.out.println(f.parseObject("5 900zł"));

spowoduje błąd. Składnia "ze spacją" jest używana bardzo często ponieważ jest przejrzysta. Zatem i tak trzeba pozbyć się spacji, kropek i zł. Przecież użytkownik podaje liczby, a przynajmniej powinien mieć taką możliwość, w dowolnej w miarę rozsądnej składni.

0

wszystko sie zgadza co mowisz, bedzie wyjatek, ale gosciu pytal tylko jak wrocic z powrotem do double majac zformatowany string
co do tego czy ze spacja jest przjrzyscie czy nie - jesli uzywamy locale polskie w aplikacji to uzywamy polskie i juz, musimy sie podporzadkowac, jesli natomiast to za malo to twoje podejscie jest oczywiscie bardziej elastyczne, ale tez podatne na bledy - nigdy nie wiesz czy gdzies w krajach za gorami czy lasami do odrebnienia czesci ulamkowej od calosci uzywana jest kropka, przecinek czy srednik. czasami przecinem uzywany jest zeby oddzielic tysiace - sugerujesz zeby zastapic przecinki kropkami i parsowac - w tym wypadku nie zadziala - bedzie wiele kropek, jak juz to bym chyba odrzucil walute na koncu i uzyl jakis number format zeby sparsowac znowu lokalnie

peace

0

hm... rzeczywiście co kraj to obyczaj. Zresztą format walutowy to nie tylko problem aplikacji okienkowych, a przede wszystkim webowych. Można spróbować narzucić formatowanie, ale to znowu cofa nas do głównego problemu. Zresztą należało by wtedy kombinować z komunikatami o błędach.

0

przy operacjach na liczbach mam wszystko we float. Dopiero jak wrzucam do modelu tabelki to klepie to NumberFormatem.
Pytałem się o to dlatego że zrobiłem możliwość eksportu danych z tabeli do pdf i xml. I interesowało mnie czy można to bez problemowo przeformatować. Ale widocznie nie :/

0

hmm, no mi sie wydaje ze mozna - zakladam ze w pdf czy tez xml chcesz miec floaty a nie sformatowany tekst (tak zrozumialem poprzedni post), wiec podczas nacisniecia guzika "Exsport" po prostu parsuj elementy tabeli uzywajac tego samego formattera i wywalaj do eksportera jako juz floaty cyz tam obiekty typu Number zdaje sie sa zwracane ktore moga byc typu Integer Double itp - jako ze one sa w pamieci tego samego kompa ktory dokonal formatowania umieszczajac je w tabelce, jest to bezpieczne. problem wystapilby jakbys np tabelke serializowal i wyslal na inna maszyne z innym lokale, deserializowal i probowal eksportowac - wtedy bylby wyjatek
co do tego ze parsowaine zwraca Number, to ma ona metody floatValue, intValue itd, a zatem mozesz dostac prymitywy jakie tylko chcesz
pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1