Avatar billede ullidk Nybegynder
26. februar 2005 - 12:34 Der er 9 kommentarer og
1 løsning

Gange double med int og få returneret resultat som int

Hejsa,

Jeg skal udregne en skaleringsfaktor ifm. med en graf (til J2ME) og vil dividere skærmens højde med den maximale værdi i en vector af punkter. Dette
resulterer i en double-værdi, som skal ganges med de forskellig y-akse punkter for at opnå den rigtige skalering. Men problemet er at jeg SKAL bruge int til at tegne de forskellige punkter.

Nogle ideer?
Avatar billede arne_v Ekspert
26. februar 2005 - 12:38 #1
double x = 1.23;
int i = 10;
int res = (int)(x * i);
Avatar billede arne_v Ekspert
26. februar 2005 - 12:38 #2
NB: den runder ned - det skal gøre slidt anderledes hvis der skal runds af
eller rundes op.
Avatar billede ullidk Nybegynder
26. februar 2005 - 12:50 #3
Problem:
int y = 855; // y-akse værdi
int height = 160; //canvas højde
double factor = height/y;  <-- RESULTAT: 0.0

int yAkse = (int)(y*factor);  <--- RESULTAT: 0.0

Kan du se problematikken? På denne måde vil jeg hver gang et y-akse punkt er større
end canvas-højden få et resultat der hedder 0!
Avatar billede mikkelbm Nybegynder
26. februar 2005 - 12:54 #4
Er det ikke fordi du dividerer int værdier?

double factor = height/y;

skal vel være:

double factor = (double)height/(double)y;

?
Avatar billede duckman Nybegynder
26. februar 2005 - 12:55 #5
prøv med:
double factor = ((double)height)/((double)y);
Avatar billede ullidk Nybegynder
26. februar 2005 - 12:57 #6
Yes, nåede lige at finde ud af det selv:-) Men svar alle tre, så kan I dele i porten:-)
Avatar billede duckman Nybegynder
26. februar 2005 - 12:58 #7
hvis du vil afrunde en double til int kan du evt. bruge Math.round(double a).
dette returnerer ganske vist en long, men den er jo nem nok at caste til int
Avatar billede mikkelbm Nybegynder
26. februar 2005 - 12:58 #8
Arne svarede vel på det du spurgte om til at starte med. Så bare lad ham få point.
Avatar billede arne_v Ekspert
26. februar 2005 - 13:09 #9
Det er faktisk nok at caste en af operanderne f.eks.:

double factor = height/(double)y;
Avatar billede arne_v Ekspert
26. februar 2005 - 13:09 #10
og et svar
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