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的参数转换为double
29%。
参数
arg | - | floating point value |
---|
返回值
true
如果arg
是南人false
否则。
注记
有许多不同的nn值具有不同的符号位和有效载荷,请参见std::nan
和std::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。