Avatar billede flodhesten Nybegynder
11. december 2008 - 22:18 Der er 10 kommentarer og
1 løsning

Bytte om på komma og punktum i tal

Jeg har nogle tal skrevet med dansk skrivemåde, altså 1.050,52, 215,78 etc.

Jeg har tallene i en String-variabel. Hvordan kan jeg få formateret dem om til Double, uden at tallet mister sin værdi?

Altså 1.050,52 skulle gerne blive 1050.52

Man kunne eventuelt bruge replace, men er der ikke andre alternativer, noget med numberFormat eller lign.?
Avatar billede arne_v Ekspert
11. december 2008 - 22:22 #1
proev:

NumberFormat nf = new DecimalFormat("#0.00", new DecimalFormatSymbols(new Locale("da", "dk")));

og nf.parse(dinstring)
Avatar billede erikjacobsen Ekspert
11. december 2008 - 22:24 #2
Og Arne kom lige først - men her et et link til at læse nærmere: http://java.sun.com/j2se/1.5.0/docs/api/java/text/NumberFormat.html
Avatar billede arne_v Ekspert
11. december 2008 - 22:38 #3
Der er en lille forskel.

Maaden i det link virker. Min kode ovenfor virker af en eller anden grund ikke.
Avatar billede arne_v Ekspert
11. december 2008 - 22:39 #4
Ah. Tusind separator skal angives i formatet.

        String s = "1.050,52";
        NumberFormat nf1 = new DecimalFormat("#,000.00", DecimalFormatSymbols.getInstance(new Locale("da", "dk")));
        System.out.println(nf1.parse(s));
        NumberFormat nf2 = NumberFormat.getInstance(new Locale("da", "dk"));
        System.out.println(nf2.parse(s));

giver:

1050.52
1050.52
Avatar billede flodhesten Nybegynder
11. december 2008 - 22:59 #5
Tak begge.

Hvordan kan det være at jeg ikke kan gøre følgende:

Double rate = nf.parse(parts[2]);
Avatar billede erikjacobsen Ekspert
11. december 2008 - 23:07 #6
Hvad sker der? Hvad står der i parts[2]?
Avatar billede flodhesten Nybegynder
11. december 2008 - 23:09 #7
Det er bare et string array hvor jeg henter værdien 1.050,52
Avatar billede erikjacobsen Ekspert
11. december 2008 - 23:10 #8
Hvad sker der? Metoden parse afleverer et Number-objekt, så det er nok en typefejl. Prøv

Double rate = nf.parse(parts[2]).doubleValue();
Avatar billede flodhesten Nybegynder
11. december 2008 - 23:14 #9
Okay. Der kan man se. Objektet skulle lige konveteres til double. Nu virker det.

Tak.

Jeg foreslår at pointene bliver delt lige mellem jer.
Avatar billede arne_v Ekspert
12. december 2008 - 03:03 #10
et svar fra mig
Avatar billede erikjacobsen Ekspert
12. december 2008 - 08:56 #11
Ingen point til mig, tak.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester