PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ + Kommazahlen



Magge2k
06.07.2005, 17:15
Hi Leute,

ist mir jetzt fast schon n bissle peinlich aber wie kann ich in C++ eine komma Zahl ausrechnen?

anpassX = 209 / 10000;


wobei die 209 und 10000 später einmal variable "warscheinlich" integer Zahlen sind...kommen von der Breite eines Images -> 209 und dem Maximal wert eines schiebe reglers...

nur wenn ich mir den Wert anpassX anzeigenlassen will kommt immer 0 heraus...ich weiß auch daß das ergebniss 0.0209 sein müsste...aber er zeigts mir nicht an....

vielen danke für eure Hilfe!

greez!

Radian
06.07.2005, 17:36
von welchem Typ ist denn anpassX? Wenns int ist kanns nichts werden, da 0,0209 ja keine Ganzzahl ist. Mit float anpassX sollte es klappen!

Magge2k
06.07.2005, 17:53
Hmm....genau das macht es ja nicht....

also hier einmal ein paar Quelltext schnipsel:





float anpassX;

...

anpassX = 209 / 10000; //Image1->Width / tbX->Max

...



Außerdem habe ich gerade festgestellt daß ich noch ein Problem habe....
und zwar möchte ich einen 16Bit Hex-Wert in 2x 8Bit Packeten versenden...

ich dachte die Umwandlung müsste so funktionieren.....




unsigned short int x, y;
unsigned char ux, uy, lx, ly;

...

uy = y / 0xFF;
ly = y;

...

ux = x /0xFF;
lx = x;

...




wobei ux für Upper X-Wert steht.

z.B. bei der zahl 45678(dec) also B26E(Hex)

das B2 sein soll

und lx für Lower X-Wert.

also für 6E steht.....

wenn ich mir den wert 65535 anzeigen lasse und einmal mit der mit angezeigten Zahl im Programm vergleiche fehlen mit 256 um bei FFFF auf 65535 zu kommen.... was mache ich falsch?

greez!

Kjion
06.07.2005, 18:14
Probiers mal folgendermaßen


float anpassX;
anpassX = 209.0 / 10000.0; //Image1->Width / tbX->Max

oder auch


float anpassX;
anpassX = (float) 209 / (float) 10000; //Image1->Width / tbX->Max


zum zweiten Problem:


unsigned short int x, y;
unsigned char ux, uy, lx, ly;

uy = (unsigned char) (y>>8);
ly = (unsigned char) (y & 0x00ff);


MfG Kjion

Magge2k
06.07.2005, 18:33
HEY, cool!!!

DANKE für die schnelle Hilfe, hat geklappt!!!


greez