请问如何计算出#QNAN

六道佩恩 2019-01-18 07:12:15
已知除以0.0可以得出#INF,对负数开方可以得出#IND,请问如何能得出#QNAN?观察二进制,发现#QNAN和#INF的区别是#QNAN的尾数部分不全为0。
...全文
300 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
这就是C库函数,不支持C99的编译器可以用NAN常量,C++中有quiet_NaN(#include <limits>)
赵4老师 2019-01-22
  • 打赏
  • 举报
回复
对浮点异常值NAN、QNAN、 SNAN、 IND、 INF的处理
https://blog.csdn.net/lisai17/article/details/14649419
赵4老师 2019-01-22
  • 打赏
  • 举报
回复
_isnan
Checks given double-precision floating-point value for not a number (NaN).

int _isnan( double x );

Routine Required Header Compatibility
_isnan <float.h> Win 95, Win NT


For additional compatibility information, see Compatibility in the Introduction.

Libraries

LIBC.LIB Single thread static library, retail version
LIBCMT.LIB Multithread static library, retail version
MSVCRT.LIB Import library for MSVCRT.DLL, retail version


Return Value

_isnan returns a nonzero value (TRUE) if the argument x is a NaN; otherwise it returns 0 (FALSE).

Parameter

x

Double-precision floating-point value

Remarks

The _isnan function tests a given double-precision floating-point value x, returning a nonzero value if x is a NaN. A NaN is generated when the result of a floating-point operation cannot be represented in Institute of Electrical and Electronics Engineers (IEEE) format. For information about how a NaN is represented for output, see printf.

Floating-Point Support Routines

See Also _finite, _fpclass
_ZGq 2019-01-21
  • 打赏
  • 举报
回复
引用 4 楼 六道佩恩 的回复:
[quote=引用 3 楼 _ZGq 的回复:]
0.0/0.0==#QNAN ; #INF*0.0==#QNAN

我测试0.0/0.0是#IND[/quote]
#INF*0.0 呢?(1.0/0.0*0.0)
六道佩恩 2019-01-21
  • 打赏
  • 举报
回复
引用 9 楼 早打大打打核战争 的回复:
#include <math.h> double x = nan("");
请问这个nan函数是干什么的?C标准库没查到,MSDN里只有寥寥几句,没看懂
六道佩恩 2019-01-21
  • 打赏
  • 举报
回复
引用 10 楼 _ZGq 的回复:
[quote=引用 8 楼 六道佩恩 的回复:] [quote=引用 7 楼 _ZGq 的回复:] [quote=引用 4 楼 六道佩恩 的回复:] [quote=引用 3 楼 _ZGq 的回复:] 0.0/0.0==#QNAN ; #INF*0.0==#QNAN
我测试0.0/0.0是#IND[/quote] #INF*0.0 呢?(1.0/0.0*0.0)[/quote] #INF只是输出时的错误表示吧。。。。还可以用来乘吗?都编译不通过[/quote] 不是已经得出了#INF==1.0/0.0吗?带进去就行了:1.0/0.0*0.0[/quote] 结果是#IND
赵4老师 2019-01-21
  • 打赏
  • 举报
回复
电脑内存或文件内容或传输内容只是一个一维二进制字节数组及其对应的二进制地址;
人脑才将电脑内存或文件内容或传输内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、#QNAN、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
_ZGq 2019-01-21
  • 打赏
  • 举报
回复
引用 8 楼 六道佩恩 的回复:
[quote=引用 7 楼 _ZGq 的回复:]
[quote=引用 4 楼 六道佩恩 的回复:]
[quote=引用 3 楼 _ZGq 的回复:]
0.0/0.0==#QNAN ; #INF*0.0==#QNAN

我测试0.0/0.0是#IND[/quote]
#INF*0.0 呢?(1.0/0.0*0.0)[/quote]
#INF只是输出时的错误表示吧。。。。还可以用来乘吗?都编译不通过[/quote]
不是已经得出了#INF==1.0/0.0吗?带进去就行了:1.0/0.0*0.0
  • 打赏
  • 举报
回复
#include <math.h>
double x = nan("");
六道佩恩 2019-01-21
  • 打赏
  • 举报
回复
引用 7 楼 _ZGq 的回复:
[quote=引用 4 楼 六道佩恩 的回复:] [quote=引用 3 楼 _ZGq 的回复:] 0.0/0.0==#QNAN ; #INF*0.0==#QNAN
我测试0.0/0.0是#IND[/quote] #INF*0.0 呢?(1.0/0.0*0.0)[/quote] #INF只是输出时的错误表示吧。。。。还可以用来乘吗?都编译不通过
六道佩恩 2019-01-20
  • 打赏
  • 举报
回复
引用 1 楼 liangxin509 的回复:
为啥要得到这个数呢?有什么具体的用途吗?
我确实有我的需要,但不方便说。
六道佩恩 2019-01-20
  • 打赏
  • 举报
回复
引用 2 楼 赵4老师 的回复:
浮点数格式 http://bbs.csdn.net/topics/390676437
赵老师,这个帖子里并没有错误浮点数相关的呀。浮点数的结构我是知道的,我只是想如何计算才能得出#QNAN
六道佩恩 2019-01-20
  • 打赏
  • 举报
回复
引用 3 楼 _ZGq 的回复:
0.0/0.0==#QNAN ; #INF*0.0==#QNAN
我测试0.0/0.0是#IND
_ZGq 2019-01-20
  • 打赏
  • 举报
回复
0.0/0.0==#QNAN ; #INF*0.0==#QNAN
赵4老师 2019-01-20
  • 打赏
  • 举报
回复
liangxin509 2019-01-19
  • 打赏
  • 举报
回复
为啥要得到这个数呢?有什么具体的用途吗?

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧