timestamp
Mitglied Käsekuchen
Hallo Forum,
ich scheitere gerade kläglich an der Umrechnung vom Bogenmaß ins Gradmaß. Ich vermute einen Fehler bei der Präzision, wundere mich aber, dass es gleich so heftig daneben liegt. Auch weiß ich nicht, wie ich das beheben könnte.
Die atan2 Funktion liefert den richtigen Wert. Die Umrechnung ist jedoch falsch
Ausgabe:
edit:
Okay, er teilt nur durch 6 und nicht durch 6.28, somit komme ich zumindest auf die 47°.... aber warum nicht?
edit 2:
Sorry für den Post, wenn man die Variable als int deklariert darf man sich natürlich nicht wundern.
In dem Sinne, schönen Abend noch, ich bin reif fürs Bett...
ich scheitere gerade kläglich an der Umrechnung vom Bogenmaß ins Gradmaß. Ich vermute einen Fehler bei der Präzision, wundere mich aber, dass es gleich so heftig daneben liegt. Auch weiß ich nicht, wie ich das beheben könnte.
Die atan2 Funktion liefert den richtigen Wert. Die Umrechnung ist jedoch falsch
C++:
//MathLib.h
#ifndef MATHLIB_H
#define MATHLIB_H 1
const int PI = 3.14159265359;
const int TAU = 6.28318530718;
double rad2deg(double rad){
return rad/TAU * 360;
}
double deg2rad(double deg){
return deg/360 * TAU;
}
#endif // CONSTANTS_H
//ComplexNumber.cpp
#include "ComplexNumber.h"
#include "MathLib.h";
#include <math.h>
ComplexNumber::ComplexNumber(double re, double im) : re(re), im(im){
};
double ComplexNumber::getAngle(bool inDegrees){
if( inDegrees ){
return rad2deg(atan2(this->re, this->im));
}
return atan2(this->re, this->im);
}
//main.cpp
ComplexNumber z = ComplexNumber(1, 1);
cout << "Radius: " << z.getRadius() << endl;
cout << "Angle(rad): " << z.getAngle() << endl;
cout << "Angle(deg): " << z.getAngle(true) << endl;
Ausgabe:
Radius: 1.14121
Angle(rad): 0.785398
Angle(deg): 47.1239
edit:
Okay, er teilt nur durch 6 und nicht durch 6.28, somit komme ich zumindest auf die 47°.... aber warum nicht?
edit 2:
Sorry für den Post, wenn man die Variable als int deklariert darf man sich natürlich nicht wundern.
In dem Sinne, schönen Abend noch, ich bin reif fürs Bett...