我的問題是在first_x
和second_x
的定義中的某處。當我撥打quad_eq
函數時,根據下面的代碼得到一個-nan(ind)返回值。如果我將.pushback()
方法參數更改爲文字整數,我得到的是返回的整數而不是NaN。這使我相信問題出在我的計算/定義first_x
和second_x
。也許C++有一些技巧我沒有看到或理解。任何人都可以看到我的問題是什麼? (如果這有助於我的工作出了Bjarne Stroustrup的C++原理與實踐使用C++,他給我的std_lib_facilities.h文件來使用,因爲我不明白,頭還)爲什麼我應該得到雙倍的NaN?
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;
}
我認爲你的意思是'b * b'而不是'b * 2'。 – Arcinde
NaN是一個完美合法的內容。特別是如果你不注意你進入某些操作的值。 – StoryTeller
[Squareroot返回不是C++中的數字]的可能重複(https://stackoverflow.com/questions/8950603/squareroot-returning-not-a-number-in-c) – GSerg