Avatar billede Game_over_Goofy Nybegynder
06. juli 2012 - 14:24 Der er 6 kommentarer og
1 løsning

Java - Datatype

Hejsa,

Jeg sidder og arbejder med jave og har brug for en datatype som kan håndtere 12 ciffre.

Jeg har forsøgt mig med -"long" men når jeg køre programmet for jeg meddelsen - "Integers number to large"

Tallet jeg skal arbejde med er 600851475143

Nogen som har en ide ?
Avatar billede naansoft Nybegynder
06. juli 2012 - 14:38 #1
Brug BigDecimal.
Den findes i java.math.BigDecimal. Her er en diskussion:

http://www.coderanch.com/t/492688/java/java/java-math-BigDecimal-vs-double
Avatar billede arne_v Ekspert
06. juli 2012 - 14:51 #2
600851475143 kan godt gemmes i en long, *men* hvis du vil have tallet i dit program skal du skrive 600851475143L !
Avatar billede arne_v Ekspert
06. juli 2012 - 14:51 #3
Hvis du skal over hvad long kan klare er der BigInteger (BigDecimal er som navnet antyder til decimal tal).
Avatar billede Game_over_Goofy Nybegynder
06. juli 2012 - 17:53 #4
Tak for hjælpen #3 -

Det virkede nogenlunde - problemet er nu bare at programmet hænger.

jeg har en while

while (mult != tal )
hvor tal = 600851475143L
multi bliver talt op og på et tidspunkt er den ligeså stor som tal.

Kan programmet hænge fordi tal har "L" på til sidst som mult aldrig får ? Hvordan løser man lige det problem ?
Avatar billede Game_over_Goofy Nybegynder
06. juli 2012 - 18:14 #5
haha... ja så løste jeg det - jeg skulle bare erklære mult som long og sætte L på værdien

#3 smid et svar
Avatar billede arne_v Ekspert
06. juli 2012 - 18:15 #6
svar
Avatar billede arne_v Ekspert
06. juli 2012 - 18:18 #7
Man skal passe paa int overflow.

public class Overflow {
    public static void main(String[] args) {
        int v = Integer.MAX_VALUE;
        System.out.println(v);
        v = v + 1;
        System.out.println(v);
    }
}

udskriver faktisk:

2147483647
-2147483648
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