c ++如何在数组中检查-1。#IND

时间:2011-11-02 19:44:33

标签: c++ floating-point

我有一个浮点数组,它存储了一些由某些函数计算出来的值。但是,当我从数组中检索一个值时,其中一些值为-1。#IND,这是一个浮点错误或某种我认为。

所以继承我的小问题,如何使用if语句检查float数组是否包含-1。#IND值,以便我可以用它做什么?

由于

4 个答案:

答案 0 :(得分:9)

if(a!= a); 只有当a是NaN时才会出现这种情况。 哦,还有在cmath中有一个isnan()函数。 More About isnan()...

答案 1 :(得分:2)

-1。#IND是NaN代码(不是数字),因为该值未定义/不可表示。因此,如果数值算法产生NaN值,则可能存在问题。检查浮点异常是否已打开,因为除以0错误可导致NaN,并确保在调试模式下运行它,逐步查看它何时,如何以及为何发生。

不确定您是否可以进行直接相等比较,因为表示可以更改,

检查IEEE 754,同时检查您的编译器是否使用IEEE 754浮点数。

希望这有帮助。

答案 2 :(得分:1)

-1.#IND看起来像是“无限期”值,如果您尝试计算0/0这样的话会出现。

您可能遇到的其他值是正无穷大。

要过滤掉这些特殊值,请使用_finitefinitef_fpclass等功能。

答案 3 :(得分:0)

检查浮点值是否为有效数字的好方法是使用:std :: isnormal() 如果数字不正常,你可以使用std :: fpclassify()来确定它是什么错误。