我的问题出现在first_x
和second_x
的定义中。当我调用quad_eq
函数时,我会根据下面的代码获得-nan(ind)返回。如果我将.pushback()
方法参数更改为文字整数,则返回返回的整数而不是NaN。这让我相信问题在于我对first_x
和second_x
的计算/定义。也许有一些我没有看到或理解的C ++技巧。任何人都可以看到我的问题是什么? (如果这有助于我使用Bjarne Stroustrup的C ++原理和练习使用C ++,他给我使用std_lib_facilities.h文件,因为我还不理解标题)
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;
}
答案 0 :(得分:4)
根据输入的不同,您将获取负数的平方根,因此您可以获得NaN(实际上是一个双精度数),并且任何其他操作都会传播。
旁注:您显示的代码不按原样编译,因为它缺少#include <vector>
和using namespace std;
。后者通常也是frowned upon。