• 算法小白的心得笔记:关于Nan


    NaN 是什么

    在C++中,NaN(Not a Number)是一种特殊的浮点数值,用于表示无法表示的数值或未定义的操作,例如0除以0。如果你的double类型变量显示为NaN,那么可能是在计算过程中出现了这种未定义的操作。

    如果你想检查一个double类型变量是否为NaN,你可以使用C++标准库中的std::isnan函数。例如:

    #include  // for std::isnan
    
    double d = std::sqrt(-1); // this will be NaN
    
    if (std::isnan(d)) {
        std::cout << "d is NaN" << std::endl;
    } else {
        std::cout << "d is not NaN" << std::endl;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在上述代码中,std::sqrt(-1)会返回NaN,因为不能对负数开平方。然后我们使用std::isnan来检查d是否为NaN。

    如果你想打印一个double类型的NaN值,你可以直接使用std::cout,例如:

    double d = std::sqrt(-1); // this will be NaN
    std::cout << d << std::endl; // this will print "nan"
    
    • 1
    • 2

    这将打印出"nan"。

    怎么存放一个NaN类型的值

    在C++中,你可以使用标准库中的函数std::nan("")来创建一个NaN值,并将其存放在一个double类型的变量中。例如:

    #include  // for std::nan
    
    double d = std::nan("");
    
    std::cout << d << std::endl; // this will print "nan"
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在上述代码中,std::nan("")会返回一个NaN值,我们将其存放在double类型的变量d中。然后我们打印d,将会输出"nan"。

    另外,你也可以通过一些未定义的数学操作来得到NaN值,例如0除以0,或者对负数开平方等。例如:

    double d = 0.0 / 0.0; // this will be NaN
    
    std::cout << d << std::endl; // this will print "nan"
    
    • 1
    • 2
    • 3

    在上述代码中,0除以0是未定义的,所以结果是NaN。我们将这个结果存放在double类型的变量d中,然后打印d,将会输出"nan"。

    std::nan(“”)需要什么头文件

    std::nan("")函数需要包含头文件。这个函数是C++标准库中的数学函数,用于生成一个"非数字"(NaN)的特殊浮点值。

    所以,你的代码应该是这样的:

    #include  // for std::nan
    #include  // for std::cout
    
    int main() {
        double d = std::nan("");
        std::cout << d << std::endl; // this will print "nan"
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这段代码中,我们首先包含了头文件,然后在main函数中,我们使用std::nan("")来生成一个NaN值,并将其存储在double类型的变量d中。最后,我们打印出d的值,将会输出"nan"。

    分享一个有趣的 学习链接:https://xxetb.xet.tech/s/HY8za

  • 相关阅读:
    干货|数据资产评估的基本方法和选择方法
    GPT-3在化学中进行低数据发现是否足够?
    使用 Azure 静态 Web 应用服务免费部署 Hexo 博客
    Python 数据结构和算法实用指南(二)
    Python 文件写入操作
    庖丁解牛:NIO核心概念与机制详解 06 _ 连网和异步 I/O
    JAVA宠物寄存中心计时收费系统计算机毕业设计Mybatis+系统+数据库+调试部署
    策略验证_卖出口诀_三种图线交叉点卖出股票需抢先
    Windows下Kafka集群搭建
    Day16--加入购物车-动态设置tabBar的数组徽标
  • 原文地址:https://blog.csdn.net/qq_29111047/article/details/134256050