C++中非数nan的定义与范例

Posted phoenixdsg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中非数nan的定义与范例相关的知识,希望对你有一定的参考价值。

/*
 * C++中非数的定义
NaN :阶码的每个二进制位全为1  并且  尾数不为0;
无穷:阶码的每个二进制位全为1  并且  尾数为0;符号位为0,是正无穷,
符号位为1是负无穷。所以NaN、正无穷、负无穷可以如此定义,
可以如此判断是否NaN:

//float
int __NaN=0xFFC00000,__Infinity=0x7F800000,__Neg_Infinity=0xFF800000;
const float NaN=*((float *)&__NaN),Infinity=*((float *)&__Infinity),Neg_Infinity=*((float *)&__Neg_Infinity);

bool IsNaN(float dat)

 int & ref=*(int *)&dat;
 return (ref&0x7F800000) == 0x7F800000 && (ref&0x7FFFFF)!=0;


//double
__int64 __NaN=0xFFF8000000000000,__Infinity=0x7FF0000000000000,__Neg_Infinity=0xFFF0000000000000;
const double NaN=*((double *)&__NaN),Infinity=*((double *)&__Infinity),Neg_Infinity=*((double *)&__Neg_Infinity);

bool IsNaN(double dat)

 __int64 & ref=*(__int64 *)&dat;
 return (ref&0x7FF0000000000000) == 0x7FF0000000000000 && (ref&0xfffffffffffff)!=0;

---------------------
版权声明:本文为CSDN博主「这个长得可爱」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ggjttfc/article/details/84025097
//下面是非数的使用范例
    float xx=std::numeric_limits<float>::quiet_NaN();
    cout<<"maximum value="<<isnan(xx)<<endl;
*/

以上是关于C++中非数nan的定义与范例的主要内容,如果未能解决你的问题,请参考以下文章

计算二维数组每行中非 NaN 值的数量

Wordpress 自定义元查询搜索在 OR 关系中非常慢

提取数组中非 NaN 元素的索引和值的正确方法

Matlab中非Nan-Sparse变换马赛克图像的有效混合

使用 Pyspark 计算 Spark 数据帧每列中非 NaN 条目的数量

C程序范例——结构体