什么是NaN?
NaN :Not a number.
IEEE对符点数的标准化中有一个规定:指数为255,底数不为0时,是Nan(Not a Number)表示不是一个浮点值。
double数据的格式:
double双精度数据类型存储格式
2008-03-03 11:34
double双精度数据类型存储格式
IEEE 双精度格式为8字节64位,由三个字段组成:52 位小数 f ; 11 位偏置指数 e ;以及 1 位符号 s。
这些字段连续存储在两个 32 位字中
详见数值计算指南
IEEE 双精度格式为8字节64位,由三个字段组成:52 位小数 f ; 11 位偏置指数 e ;以及 1 位符号 s。
这些字段连续存储在两个 32 位字中
详见数值计算指南
一小段简易的生成NaN的代码:
long int *res;
double result;
double result;
res = (long int *) &result;
res[0] = -1;
res[1] = -1;
res[0] = -1;
res[1] = -1;
printf ("/n%d",result);
结构为 NaN。
此血案后的思考:遇到这类问题,应该是去找IEEE的规范,而不是东问西问浪费时间。
我们应该养成多看标准规范的习惯。