大家好,欢迎来到IT知识分享网。
1 isnan()
isnan() 判断是不是NAN值(not a number非法数字)
标准库中定义了一个宏:NAN来表示非法数字。
比如负数开方、负数求对数、0.0/0.0、0.0* INFINITY(无穷大)、INFINITY/INFINITY、INFINITY-INFINITY
以上操作都会得到NAN。
注意:如果是整数0/0会产生操作异常
2 isinf()
isinf()测试某个浮点数是否是无限大,其中INF表示无穷大
3 用法
isfinite()测试某个浮点数是不是有限的数
isfinite(float x);
isfinite(double x);
isfinite(long double x);
isinf()测试某个浮点数是否是无限大
isinf(float x);
isinf(double x);
isinf(long double x);
isnan()测试某个浮点数是否是 非数字
isnan(float x);
isnan(double x);
isnan(long double x);
isnormal()测试某个浮点数是否被规格化
isnormal(float x);
isnormal(double x);
isnormal(long double x);
signbit()测试某个浮点数是否为负数
signbit(float x);
signbit(double x);
signbit(long double x);
————————————————
std::isnan
定义于头文件
|
||
bool isnan( float arg );
|
(1) | (C++11 起) |
bool isnan( double arg );
|
(2) | (C++11 起) |
bool isnan( long double arg );
|
(3) | (C++11 起) |
bool isnan( IntegralType arg );
|
(4) | (C++11 起) |
arg
是否为非数( NaN )值。
arg
参数的重载集或函数模板。等价于 (2) (将参数转型为 double )。
参数
arg | – | 浮点值 |
返回值
若 arg
为 NaN 则为 true ,否则为 false 。
注意
有多个拥有不同符号位和载荷的不同 NaN 值,参阅 std::nan 及 std::numeric_limits::quiet_NaN 。
NaN 值决不与自身或其他 NaN 值比较相等。 IEEE-754 不要求复制 NaN 保留其位表示(符号与载荷),尽管大多数实现保留。
另一种测试浮点值是否 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
std::isinf
定义于头文件
|
||
bool isinf( float arg );
|
(1) | (C++11 起) |
bool isinf( double arg );
|
(2) | (C++11 起) |
bool isinf( long double arg );
|
(3) | (C++11 起) |
bool isinf( IntegralType arg );
|
(4) | (C++11 起) |
arg
是否为正或负无穷大。
arg
参数的重载集或函数模板。等价于 (2) (将参数转型为 double )。
参数
arg | – | 浮点值 |
返回值
若 arg
为无穷大则为 true ,否则为 false 。
示例
#include <iostream>
#include <cmath> #include <cfloat> int main() { std::cout << std::boolalpha << "isinf(NaN) = " << std::isinf(NAN) << '\n' << "isinf(Inf) = " << std::isinf(INFINITY) << '\n' << "isinf(0.0) = " << std::isinf(0.0) << '\n' << "isinf(exp(800)) = " << std::isinf(std::exp(800)) << '\n' << "isinf(DBL_MIN/2.0) = " << std::isinf(DBL_MIN/2.0) << '\n'; }
输出:
isinf(NaN) = false isinf(Inf) = true isinf(0.0) = false isinf(exp(800)) = true isinf(DBL_MIN/2.0) = false
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/31982.html