Avatar billede supa Nybegynder
27. januar 2005 - 15:24 Der er 10 kommentarer og
1 løsning

Lige eller ulige tal

Hvordan finder jeg ud af om min int, float eller double er et ulige tal..?
Avatar billede thesurfer Nybegynder
27. januar 2005 - 15:27 #1
Hvis et tal divideret med 2, giver et helt tal, er det et lige tal.

6 / 2 = 3 (helt tal = lige tal)
7 / 2 = 3.5 (komma tal = ulige tal)
Avatar billede rasmusbg Nybegynder
27. januar 2005 - 15:33 #2
x % 2 == 0 //true hvis x er lige
Avatar billede supa Nybegynder
27. januar 2005 - 15:39 #3
Hvis jeg skriver følgende:

int tal1 = 10;
int tal2 = 11;

public void ligeEllerUlige(int input){
  if(input % 2 == 0){
    System.out.println("JEG ER ET LIGE TAL");
  }
  else{
    System.out.println("JEG ER ET ULIGE TAL");
  }
}

Så burde det virke.. MED INT, jeg kan sagtens finde ud af om det er lige eller ulige.. Men jeg er faktisk mest interesseret i double og float..

eks. 1: (Eksempel med double)
double tal1 = 10.0;
double tal2 = 11.1;

public void ligeEllerUlige(double input){
  if(input % 2 == 0){
    System.out.println("JEG ER ET LIGE TAL");
  }
  else{
    System.out.println("JEG ER ET ULIGE TAL");
  }
}

eks. 2: (Eksempel med float)
float tal1 = 10.0f;
float tal2 = 11.2f;

public void ligeEllerUlige(float input){
  if(input % 2 == 0){
    System.out.println("JEG ER ET LIGE TAL");
  }
  else{
    System.out.println("JEG ER ET ULIGE TAL");
  }
}

Mit problem er bare at jeg ikke kan få det til at virker.. For jeg er nu engang bekendt med de gængse regneregler.. Det var mest en eller anden form for kode jeg var interesseret i.. Evt. i stil med det jeg lige har skrevet..
Avatar billede rasmusbg Nybegynder
27. januar 2005 - 15:43 #4
Tjah...jeg ved ikke, om man kan tale om, om et decimaltal er lige eller ulige. Er 11.1 f.eks. ulige? Eller hvad med 12.1?

Mit bud ville være, at du laver et cast til en int, og så lave tjekket med modulo.
Avatar billede supa Nybegynder
27. januar 2005 - 15:51 #5
I mit tilfælde er 11.1 ulige og 12.1 lige.. Jeg er teknisk set ligeglad med .x.. Og for mig er 11.9 også et ulige og 12.9 et lige tal..

11.1 til int = 11
12.1 til int = 12

11.9 til int = 12
12.9 til int = 13

Kan du se mit problem.. Jeg vil gerne have at

11.1 og 11.9 bliver til 11
12.1 og 12.9 bliver til 12.

Så hvordan gør jeg det..?
Avatar billede rasmusbg Nybegynder
27. januar 2005 - 15:55 #6
((int) x) % 2 == 0;

Det burde kunne gøre det pga. det cast, der bliver lavet. Så du kan nøjes med denne metode:

public void ligeEllerUlige(double input){
  if(((int)input) % 2 == 0){
    System.out.println("JEG ER ET LIGE TAL");
  }
  else{
    System.out.println("JEG ER ET ULIGE TAL");
  }
}
Avatar billede supa Nybegynder
27. januar 2005 - 16:03 #7
Som sagt så runder den 12.9 af til 13 (Ulige) og jeg skal bruge at tallet er 12 (lige) når man kaster fra double til int..
Avatar billede rasmusbg Nybegynder
27. januar 2005 - 16:11 #8
Ohh...undskyld...selvfølgelig!

public void ligeEllerUlige(double input){
  if(((int)Math.floor(input)) % 2 == 0){
    System.out.println("JEG ER ET LIGE TAL");
  }
  else{
    System.out.println("JEG ER ET ULIGE TAL");
  }
}
Avatar billede supa Nybegynder
31. januar 2005 - 13:35 #9
Hey, tak for det.. Det var lige det jeg ledte efter.. :)
Avatar billede rasmusbg Nybegynder
31. januar 2005 - 13:36 #10
Det var så lidt :)
Avatar billede rasmusbg Nybegynder
31. januar 2005 - 13:37 #11
og du må undskylde det lige tog lidt tid, inden jeg ramte rigtigt ;)
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