Avatar billede t-rex Nybegynder
09. juli 2011 - 11:37 Der er 2 kommentarer og
1 løsning

Divider laver fejl

Hej

Jeg har en underlig fejl som jeg lige vil hører om der er andre der har været ud for.

int size = 100;
int org_w = 1024;
int org_h = 768;


int new_h = (size/org_w) * org_h;

Det skulle gerne give 75 men af en eller anden grund skriver den 0.

/Ronni
Avatar billede superanden Nybegynder
09. juli 2011 - 11:47 #1
Det sker fordi hele din udregning benytter integers.

Dvs du siger 100/768 = 0.xxx det bliver så typecastet til en int som altid bliver rundet ned, og derfor bliver 0, og ligemeget hvad du ganger med 0 så bliver det altid 0

så du er nødt til at fortælle computeren at din division skal være floating point operation.
Avatar billede t-rex Nybegynder
09. juli 2011 - 11:49 #2
okay det vil sige at jeg skal bruge float i stedet for int... er lidt ny til .net har arbejder i php i mange år og der har jeg ikke samme problem :)
Avatar billede arne_v Ekspert
09. juli 2011 - 15:54 #3
Der er forskellig emuligheder.

1) man kan bruge float eller double for variablene

det synes jeg dog ikke er en paen loesning

2) man kan bruge float eller double i beregningen

int new_h = (int)((size/(double)org_w) * org_h);

3) man kan gange inden man dividerer

int new_h = (size * org_h) / org_w;
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