weibing

浮点计算中,判断"非数"NaN的一个简单方法, 变量居然可以"自己不等于自己"

 double a = sqrt(-1.0); //负数开平方,返回NaN双精度数

 if(a != a) //通过自己不等于自己简单判断
 {
  printf("NaN\n");
 }

双精度数的分类,标准库提供了完整方法,上面的方法可以简单判断NaN

posted on 2011-07-16 19:18 魏兵 阅读(4956) 评论(5)  编辑 收藏 引用

Feedback

# re: 浮点计算中,判断"非数"NaN的一个简单方法, 变量居然可以"自己不等于自己"[未登录] 2011-07-17 14:44 ly

a=1.0/0.0; 测试不出来。。。  回复  更多评论   

# re: 浮点计算中,判断"非数"NaN的一个简单方法, 变量居然可以"自己不等于自己" 2011-07-17 19:36 魏兵

@ly
1.0/0.0得到的是"正无穷",不是NaN,所以不行
浮点数的详细分类建议使用_fpclass函数
想给一个浮点变量直接赋值为"正无穷", double v = numeric_limits<double>::infinity()  回复  更多评论   

# re: 浮点计算中,判断"非数"NaN的一个简单方法, 变量居然可以"自己不等于自己"[未登录] 2011-07-23 00:41 ly

@魏兵
原来如此,3q  回复  更多评论   

# re: 浮点计算中,判断"非数"NaN的一个简单方法, 变量居然可以"自己不等于自己"[未登录] 2011-07-26 09:45 糯米

好神奇!具体原理是什么呢?  回复  更多评论   

# re: 浮点计算中,判断"非数"NaN的一个简单方法, 变量居然可以"自己不等于自己" 2011-12-15 10:45 随便玩玩

楼主辛苦了,
我想说的是:
有个东西叫Double.isNaN(a)

  回复  更多评论   



只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


My Links

Blog Stats

常用链接

留言簿

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜