计机羊咩咩 发表于 2014-8-27 16:20:53

浮点型数据之-1.#IND000

如图
fScrollPos是浮点型数据 未初始化 当时是(float)vScroll.nPos(0) / (float)vScroll.nPage(0);
也就是说   fScrollPos = 0 / 0;
然而看debug的结果fScrollPos != fScrollPos的判定为true

我猜测精确到某一位的时候数据不相等了
求解释其中更详细的原因

仰望天上的光 发表于 2014-8-27 16:56:05

除数为0,除法发生错误,所以得到的浮点数-1.#IND000并不是一个真实的数值(也就是说,按照IEEE754规范,没有任何一个实数和它的表示对应)
在这种情况下,对该数据进行任何操作得到的结果几乎都是不可预知的。在你当前的编译器下,可以用fScrollPos != fScrollPos来判定,但在其它C/C++编译器中就不一定可以这样来判定。
得到这样的结果后,能做的少数几件具有确定意义的事情之一就是
使用   float.h中一个函数_isnan:
int _isnan(double x);
当x是一个无效值(NaN, Not a Number) 时,返回非零值
否则返回0.

计机羊咩咩 发表于 2014-8-27 18:14:09

仰望天上的光 发表于 2014-8-27 16:56
除数为0,除法发生错误,所以得到的浮点数-1.#IND000并不是一个真实的数值(也就是说,按照IEEE754规范,没 ...

斑竹回复的好详细   长知识了:handshake赞
页: [1]
查看完整版本: 浮点型数据之-1.#IND000