Mein Problem ist irgendwo in der Definition von first_x
und second_x
. Wenn ich die Funktion quad_eq
aufrufen, bekomme ich eine -nan (ind) -Rückkehr basierend auf dem folgenden Code. Wenn ich den Methodenparameter .pushback()
zu einer Literal-Ganzzahl ändere, erhalte ich diese Ganzzahl anstelle von NaN. Dies führt mich zu der Annahme, dass das Problem mit meiner Berechnung/Definition von first_x
und second_x
ist. Vielleicht gibt es einen C++ - Trick, den ich nicht sehe oder verstehe. Kann jemand sehen, was mein Problem ist? (Wenn dies hilft, arbeite ich von Bjarne Stroustrup C++ Principles and Practice Verwendung von C++, wo er mir die std_lib_facilities.h Datei gibt zu verwenden, wie ich Header noch nicht verstehen)Warum bekomme ich NaN, wenn ich ein Double bekommen sollte?
vector<double>quad_eq(double a, double b, double c) {
vector<double>answers;
double first_x = (-b + sqrt((b * 2) - (4 * a * c)))/2 * a;
double second_x = (-b - sqrt((b * 2) - (4 * a * c)))/2 * a;
answers.push_back(first_x);
answers.push_back(second_x);
return answers;
}
Ich glaube, du meintest 'b * b' statt' b * 2'. – Arcinde
Ein NaN ist ein vollkommen legitimer Inhalt für ein Double. Vor allem, wenn Sie nicht auf die Werte achten, die Sie in bestimmte Vorgänge eingeben. – StoryTeller
Mögliches Duplikat von [Quadratwurzel gibt keine Zahl in C++ zurück] (https://stackoverflow.com/questions/8950603/squareroot-returning-not-a-number-in-c) – GSerg