double virker ikke

Tags:    java

hej.
Jeg var lige i gang med at lære lidt om arrays (er ret ny til java), mens jeg føler denne tutorial som viser hvor man laver en array med en masse værdier og så finder summen af disse værdier. Tænker jeg at det kunne være sjovt også at finde gennemsnittet af værdierne.
Jeg går ud fra at gennemsnittet nemt kan blive til en komma tal, derfor laver jeg den variable der skal indeholde værdien som en double.
Det mærkelige er bare at jeg bliver ved med at få værdien til 25,0 selvom min lommeregner siger 25,5 og min hovedregning er enig med min lommeregner.
Burde den ikke give mig ,5 når jeg laver det som en double.
Koden kommer her


class apples{
public static void main(String[] args) {
int age[]={21,6,86,21,4,56,7,3};
int sum=0;

for (int counter=0;counter<age.length;counter = counter + 1){
sum+=age[counter];
}
double average = sum/age.length;
System.out.println("the sum theze numbers is " +sum);
System.out.println("The average of these numbers is " + average);
}



}




2 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Hej Martin

Du har helt ret i at du skal bruge en double for at du kan få kommatallene med. Problemet i din kode er at linjen:

Fold kodeboks ind/udJava kode 


Ikke bliver udført som du nok umiddelbart ville gætte på. Først udregnes udtrykket sum / age.length - men da både sum og age.length er heltal (integers), bliver der lavet heltalsdivision og ikke almindelig divsion. Heltalsdivision smider alle decimaler væk, og derfor får du 25 og ikke 25,5. Først efter heltalsdivisionen bliver dit tal lavet om til en double, og din decimal er således allerede forsvundet, selvom average godt kan indeholde kommatal.

Du er derfor nød til at caste enten sum eller age.length til en double inden du foretager divisionen, da der så vil blive foretaget almindelig division, f.eks.:

Fold kodeboks ind/udJava kode 


Jeg håber det forklarer problemet nogenlunde, ellers må du bare spørge.

Når du indsætter kode her på udvikleren er det desuden smart at indsætte det som: [ code ] kode her [/ code ] (uden mellemrum).



Indlæg senest redigeret d. 07.02.2011 17:59 af Bruger #2416
Mange tak forstår det godt nu.



t