Wurzelziehen und Typenproblem
-
Ich mache hier eine ganz einfache Operation, aber es kommt nicht das Ergebnis raus, welches ich erwarte:
pdMeinDouble = (sqrt((double)((x1^2) + (x2^2))))/2;
pdMeinDouble ist ein double, x1 und x2 jeweils ein Short Integer. Rauskommen sollte sowas wie 250 oder 700, aber es kommen Werte wie 7.4342423 oder -1.#IND000 raus. Wieso? Stimmt was mit dem Casten nicht?
-
x1^2 ist ein bitweises xor aber keine Potenzierung. Dafür gibt es pow oder hier auch x1*x1.
-
x1^2 ist nicht der Potenz-Operator, nimm dazu die Funktion pow aus der cmath oder schreib x1*x1.
Im Übrigen ist deine Konstruktion echt assig zu lesen, verteile die mal auf 3-4 Zeilen, die wird dadurch nicht langsamer...
EDIT: da war ich wohl den Hauch langsamer
MfG
GPC
-
^ ist in C++ nicht der Potenz-Operator, sondern XOR - da ist es klar, wenn du nur Müll erhälst. Probiers's mal mit
pdMeinDouble = sqrt(x1*x1+x2*x2)/2;
-
Der Fehler passiert mir sowas von oft, besonders wenn ich vorher lange mit anderen Sprachen gearbeitet habe. Manchmal wünsche ich mir, dass die den blöden XOR-Operator einfach wegwerfen und einen Potenzoperator einfügen.
-
Ah, stimmt, da war mal was
Ich programmiere sonst nur Delphi, da wäre es richtig gewesen. Danke!
-
Walli schrieb:
Manchmal wünsche ich mir, dass die den blöden XOR-Operator einfach wegwerfen
Ich hoffe, du meinst das nicht ernst, und dass der xor Operator nur ein anderer sein sollte.
