C++ 基础 - If 语句测试

标签 c++ nan

这是我第一天接触 C++。我正在尝试做一个非常基本的代码来寻找二次方程的根。到目前为止,这是我的代码:

#include <iostream>
#include <cmath>

int main () {

    int a, b, c;
    double root1, root2;

    std::cout << "Enter the integers a, b, and c to fit in the quadratic equation: ax^2 + bx + c >> " << std::endl;
    std::cout << "a = ";
    std::cin >> a;
    std::cout << "b = ";
    std::cin >> b;
    std::cout << "c = ";
    std::cin >> c;
    std::cout <<"\n";
    std::cout << "Quadratic equation to solve is : " << a << "x^2 + " << b << "x + " << c <<std::endl;

    root1 = (-b + sqrt(b*b - 4*a*c))/(2*a); 
    root2 = (-b - sqrt(b*b - 4*a*c))/(2*a);

    if (root1 && root2 != nan) {
        std::cout << "root 1 = " << root1 << std::endl;
        std::cout << "root 2 = " << root2 << std::endl;
    }
    else 
    std::cout << "no root exists" << std::endl;

    return 0;
    }

我收到这个错误:

invalid operands to binary expression ('double' and 'double (*)(const char *)')

行内:

if (root1 && root2 != nan) 

我正在寻找一个简单的测试来查看根是否存在,但这显然行不通。预先感谢您的帮助!

最佳答案

要检查某数是否为实数,请使用 isnan:

if(!isnan(root1) && !isnan(root2)) 

解释:

isnan 确定给定的 float arg 是否为非数字 (NaN)。如果 arg 是 NaN,它返回 true,否则返回 false

NaN 值用于标识浮点元素的未定义或不可表示的值,例如负数的平方根或 0/0 的结果。在 C++ 中,它是通过为每个浮点类型重载函数来实现的,每个浮点类型都返回一个 bool 值。

关于C++ 基础 - If 语句测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23521834/

相关文章:

c++ - 如何为 STL 类容器提供公共(public) const 迭代器和私有(private)非 const 迭代器?

c++ - 无法在 OS X Big Sur 上编译 c++, "ld: library not found for -lgcc_s.10.4"

JavaScript 对象在创建时变得疯狂?

Python:排序函数在存在 nan 时中断

c++ - 条件变量等待抛出异常

c++ - 在 Visual C++ 中禁用#pragma message ("...")?

c++ - 迭代器复合赋值运算符

python - 在 pandas python 中删除 NaN

javascript - isNaN() 真的有必要吗?

python - 查询 panda df 以过滤列不是 Nan 的行