floating point problem...
-
hallo liebe coder,
ich würd gern werte speichern, die bis zu einer grösse von 100,123 m genau passen (also höchstens 100 und 3 nachkommastellen )...
meine einzige bedingung ist jedoch, das ich mit bitfeldern arbeiten muss, also folglich nur integer zur verfügung habe....
ich verwende die speicherung des wertes so... 99,999 m = 99999 als int wert
danach übergebe ich an einen float und teile durch 1000...
soweit so gut, jedoch kann float diesen wert nicht mehr annehmen und dank des zweierkomplements wandelt er die in eine negative zahl um... !!!
gibt es noch eine andere möglichkeit?
und warum sagt man dann, dass float einen wertebereich von +- 1*E^38 hat ???vielen dank im vorraus...
-
Das kann nicht sein. Wie rechnest Du das?
int i = 99999; double d = static_cast<double>(i)/1000;Liefert ein korrketes Ergebnis.
-
... danke für die schnelle antwort...
habe das mit (double) anstatt static_cast gelöst...
double s = (double) ptpol.GetValS()gruss, x-coder
-
Gewöhne Dir die C-casts ab. static_cast sollte immer die erste Wahl sein!