Avatar billede mik28 Seniormester
26. marts 2004 - 14:26 Der er 13 kommentarer og
1 løsning

Parse en double til en int

Jeg har en double som jeg gerne vil have lavet om til en int, fordi jeg gerne vil af med decimalerne. Hvorfor kan jeg ikke skrive

double u = 1.123;
int bb  = Integer.parseInt(u);
Avatar billede stigc Nybegynder
26. marts 2004 - 14:28 #1
double u = 1.123;
int bb  = Integer.parseInt(u+"");
Avatar billede stigc Nybegynder
26. marts 2004 - 14:29 #2
Avatar billede mik28 Seniormester
26. marts 2004 - 14:37 #3
C:\Oracle\JDeveloper10g\jdk\bin\javaw.exe -ojvm -classpath U:\java\java\classes;C:\Oracle\JDeveloper10g\jdev\lib\jdev-rt.jar Graf2
Exception in thread main
java.lang.NumberFormatException: For input string: "527.0"

    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)

    at java.lang.Integer.parseInt(Integer.java:435)

    at java.lang.Integer.parseInt(Integer.java:476)

    at Graf2.main(Graf2.java:9)

Process exited with exit code 1.
Avatar billede mik28 Seniormester
26. marts 2004 - 14:45 #4
Skulle jeg så ikke kunne gøre sådan

int bb = intValue(u);
Avatar billede stigc Nybegynder
26. marts 2004 - 14:48 #5
int bb = Integer.parseInt(u+""); burde virke

Nej du skal gøre sådan her.

Double d = new Double(u)
int bb = d.intValue();
Avatar billede mik28 Seniormester
26. marts 2004 - 14:54 #6
Tak for det. Læg lige et svar :-)
Avatar billede laplands-ugle Nybegynder
26. marts 2004 - 14:57 #7
Kan også caste den til en int sådan her

double d = 5.53232;
int i = (int)d;
Avatar billede laplands-ugle Nybegynder
26. marts 2004 - 15:00 #8
Hvilket er den nemmeste måde hvis du f.eks. har en udregning på en masse double værdier, bagefter tager man så resultatet og caster til int. På den måde undgår man at afrunde for meget hvilket ville ske hvis man lavede alle doubler om til int ind man lavede udregningen.

Men den fine måde hvis det er en enkelt double er det d.intValue() som mik28 siger.
Avatar billede arne_v Ekspert
26. marts 2004 - 15:16 #9
Jeg synes absolut at simpelt cast er den bedste måde.
Avatar billede laplands-ugle Nybegynder
26. marts 2004 - 15:19 #10
enig - men hvis man skal være helt fanatisk objektorienteret er det vel "pænere" med et metodekald :) men smag og behag
Avatar billede arne_v Ekspert
26. marts 2004 - 15:21 #11
Jeg har iøvrigt skrevet en lille artikel "Basal type konvertering i Java"
http://www.eksperten.dk/artikler/141 med denne konvertering og en
helt masse andre.
Avatar billede stigc Nybegynder
26. marts 2004 - 15:41 #12
Ja du kan caste, glemte lige det i farten. Behold dine point.

Jeg forstår nu ikke hvorfor

int bb  = Integer.parseInt(u+"");

ikke virker.
Avatar billede arne_v Ekspert
26. marts 2004 - 16:02 #13
Fordi 527.0+"" er "527.0" og det ikke en valid integer.

parseInt firventer at hele strengen er en valid integer ikke bare
at den starter med en integer.
Avatar billede mik28 Seniormester
27. marts 2004 - 22:12 #14
lukker
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