在线文档教程
C++
数字 | Numerics

std::isnan

STD::ISNAN

Defined in header
bool isnan( float arg (1)(since C++11)
bool isnan( double arg (2)(since C++11)
bool isnan( long double arg (3)(since C++11)
bool isnan( Integral arg (4)(since C++11)

1-3%29确定给定的浮点数arg是一个非a-数字%28 NaN%29值。

4%29一组重载或接受from任何论点积分型等效于%282%29%28的参数转换为double29%。

参数

arg-floating point value

返回值

true如果arg是南人false否则。

注记

有许多不同的nn值具有不同的符号位和有效载荷,请参见std::nanstd::numeric_limits::quiet_NaN...

NaN的价值从来不等于他们自己或其他的NaN价值。复制NaN并不是ieee-754所要求的,以保留其位表示形式%28符号和有效载荷%29,尽管大多数实现都是这样做的。

另一种测试浮点值是否为NaN的方法是将其与其自身进行比较:bool is_nan(double x) { return x != x; }

二次

#include <iostream> #include <cmath> #include <cfloat> int main() { std::cout << std::boolalpha << "isnan(NaN) = " << std::isnan(NAN) << '\n' << "isnan(Inf) = " << std::isnan(INFINITY) << '\n' << "isnan(0.0) = " << std::isnan(0.0) << '\n' << "isnan(DBL_MIN/2.0) = " << std::isnan(DBL_MIN/2.0) << '\n' << "isnan(0.0 / 0.0) = " << std::isnan(0.0/0.0) << '\n' << "isnan(Inf - Inf) = " << std::isnan(INFINITY - INFINITY) << '\n'; }

二次

产出:

二次

isnan(NaN) = true isnan(Inf) = false isnan(0.0) = false isnan(DBL_MIN/2.0) = false isnan(0.0 / 0.0) = true isnan(Inf - Inf) = true

二次

另见

nannanfnanl (C++11)(C++11)(C++11)not-a-number (NaN) (function)
fpclassify (C++11)categorizes the given floating point value (function)
isfinite (C++11)checks if the given number has finite value (function)
isinf (C++11)checks if the given number is infinite (function)
isnormal (C++11)checks if the given number is normal (function)
isunordered (C++11)checks if two floating-point values are unordered (function)

c ISNAN文件

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/数值/数学/isnan