社区
C语言
帖子详情
c语言中有没有表示浮点数NaN的宏
lkrich7
2005-04-26 03:10:44
我记得在《编码的奥秘》上看到IEEE对符点数的标准化中有一个规定:指数为255,底数不为0时(具体是否是这样既不太清了)是Nan(Not a Number)表示不是一个浮点值,请问C语言里是否有这个值的宏定义?在哪个头文件里?
...全文
1474
7
打赏
收藏
c语言中有没有表示浮点数NaN的宏
我记得在《编码的奥秘》上看到IEEE对符点数的标准化中有一个规定:指数为255,底数不为0时(具体是否是这样既不太清了)是Nan(Not a Number)表示不是一个浮点值,请问C语言里是否有这个值的宏定义?在哪个头文件里?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
whyglinux
2005-04-28
打赏
举报
回复
其实判断一个数是否是NaN的方法很简单:与它自身进行比较。所以上面的函数也可简单写成下列形式:
int IsNaN(float x)
{
return !(x==x);
}
zhang_jiang
2005-04-28
打赏
举报
回复
float x; // 这里只考虑32位, 64位类似
struct IEEE32
{
int fraction:23;
int exponent:8;
int sign:1;
};
IsNaN(float x)
{
struct IEEE32 *ieee32=(struct IEEE32 *)&x;
if(ieee32->exponent==0xff && !ieee32->fraction)
return 1;
return 0;
}
lkrich7
2005-04-28
打赏
举报
回复
zhang_jiang(Solar)能写一下你的宏判断吗?
whyglinux
2005-04-26
打赏
举报
回复
对于NaN的实现有两种方式:signaling NaN 和 quiet NaN。signaling NaN就是抛出异常的方式,因此它不需要定义NaN宏。quiet NaN就是即使在计算出现异常的情况下也不抛出异常从而中断程序的执行、而是将结果表示为一个特殊的值,因此只有在这种情况下NaN宏才被定义。
可见NaN定义与否是就看你使用的系统采取的是哪种处理方式。如果定义的话,应该出现在<math.h>中。
zhang_jiang
2005-04-26
打赏
举报
回复
这个在数值计算里面用处很大.
这个宏不好定义,
NaN: biased exponent = FF 而且 fraction != 0
到是可以定义一个宏判断一个数是否为NaN, 判断依据如上
llmsn
2005-04-26
打赏
举报
回复
是啊,这个有什么用啊,用const代替就行了.
uoyevoli
2005-04-26
打赏
举报
回复
没有。不过这个有什么用啊?
C语言
浮点数
运算
有些
C语言
书上说float型的有效位数是6~7位,为什么不是6位或者7位?而是一个变化的6~7位?
浮点数
在内存
中
是如何存放的? float
浮点数
要比同为4字节的int定点数
表示
的范围大的多,那么是否可以使用
浮点数
替代定点数? 为什么float型
浮点数
9.87654321 > 9.87654322不成立?为何10.2 - 9的结果不是1.2,而是1.1999998?为何987654321 + 987.654322的结果不是987655308.654322? 如何才能精确比较
浮点数
真实的大小? 看完本文档,你将会得到答案!
C语言
浮点数
运算解惑
是我博客的pdf形式,本文档来自Unix技术网,方便大家学习使用。
C语言
中
浮点数
的
表示
范围浅析 (1).pdf
C语言
中
浮点数
的
表示
范围浅析 (1)
32位
浮点数
转换成十进制小数程序
用C#写的32位
浮点数
转换成十进制小数程序。输入32位二进制数如01000000000000000000000000000000
自己动手写
C语言
float
浮点数
转换字符串的函数
自己动手写
C语言
float
浮点数
转换字符串的函数
C语言
70,014
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章