float 浮点数的无效值和无限大和无限小
2016-01-24 17:38
274 查看
今天看到源代码中有
void Unit::SetPosition(float x, float y)
{
ASSERT(x == x);
ASSERT(y == y);
。。。。。
这样的判断 以前只知道两个浮点数不能用==判断 不明白一个浮点数为什么要做相等判断
百度科普了下
浮点数计算的时候可能产生-1.#IND000 无限小 例( acos(1.0001f)) 或者无限大 1.#IND000
或者无效值 1.#INF000 例(10 / 0)
当浮点数等于 -1.#IND000
或 1.#IND000 可以用
ASSERT(x
== x); 判断是否是个无效的数
但是 1.#INF000
确不能判断
#define
InvalidDouble *(double*)("\xff\xff\xff\xff\xff\xff\xef\x7f")
图中 b的判断进不去 实在困惑
_isnan(b); 也无法判断
打印b已经是 1.#INF000
求广大高手解惑
void Unit::SetPosition(float x, float y)
{
ASSERT(x == x);
ASSERT(y == y);
。。。。。
这样的判断 以前只知道两个浮点数不能用==判断 不明白一个浮点数为什么要做相等判断
百度科普了下
浮点数计算的时候可能产生-1.#IND000 无限小 例( acos(1.0001f)) 或者无限大 1.#IND000
或者无效值 1.#INF000 例(10 / 0)
当浮点数等于 -1.#IND000
或 1.#IND000 可以用
ASSERT(x
== x); 判断是否是个无效的数
但是 1.#INF000
确不能判断
#define
InvalidDouble *(double*)("\xff\xff\xff\xff\xff\xff\xef\x7f")
图中 b的判断进不去 实在困惑
_isnan(b); 也无法判断
打印b已经是 1.#INF000
求广大高手解惑
相关文章推荐
- 树的打印方式
- 【转】Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别
- hdu 1159(DP+字符串最长公共序列)
- iOS9 中不支持http
- Ceph安装
- HDOJ 2041 超级楼梯
- Hive简介
- JavaEE Tutorials (29) - Duke辅导案例研究示例
- tornado的简单使用
- 数据结构实现之索引优先队列用例(多路归并)
- uva 101 - The Blocks Problem
- JavaEE Tutorials (28) - Duke书店案例研究示例
- 监听短信数据库,获取验证码
- iTerm2 快捷键
- 如风一样,飞翔------Day37
- JavaEE Tutorials (27) - Java EE的并发工具
- 我对递归的认识
- ssh爆破攻击,denyhosts.service服务,hosts.deny拒绝ssh登录文档
- bzoj2002
- HDU 1047 多个大数相加 Integer Inquiry