Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;sqrt返回-1.#ind000000000000000000_C++_Sqrt - Fatal编程技术网

C++ C++;sqrt返回-1.#ind000000000000000000

C++ C++;sqrt返回-1.#ind000000000000000000,c++,sqrt,C++,Sqrt,具体而言: 我正在做一些数学运算,而应用程序不断崩溃,因为一个广泛使用的double恰好得到值:-1.#IND000000000000,当“某些”数字是sqrt'ed时。。。 这是什么?不确定?无限的?太大而放不下?不是一个完美的平方根?有什么办法解决这个问题吗? 提前谢谢! 编辑:如何检查double是否具有此值?我尝试了:if(x==0x-1.#IND000000000000)和其他变体,但没有成功。是否可以检查变量是否具有此值?如果不使用复杂类型,任何低于0的值的sqrt都意味着导致异常。

具体而言:

我正在做一些数学运算,而应用程序不断崩溃,因为一个广泛使用的double恰好得到值:-1.#IND000000000000,当“某些”数字是sqrt'ed时。。。 这是什么?不确定?无限的?太大而放不下?不是一个完美的平方根?有什么办法解决这个问题吗? 提前谢谢!
编辑:如何检查double是否具有此值?我尝试了:if(x==0x-1.#IND000000000000)和其他变体,但没有成功。是否可以检查变量是否具有此值?

如果不使用复杂类型,任何低于0的值的sqrt都意味着导致异常。

如果参数为负,则会发生域错误,将全局变量errno设置为值EDOM。

该值
#IND000000000000
表示无效的数值。这通常称为QNaN(安静的非数字)值,因为它表示不确定的类型,但不会导致计算失败

很可能,您试图确定其平方根的难以捉摸的数字是负数,该值未定义。有关更多信息,请参阅


解决它首先需要您确定问题发生的位置。这意味着您需要使用调试器一步一步地检查它并观察变量的值,或者发布您的代码以便我们可以执行相同的操作。

事实上,字符串
-1.#IND000000000000
不是由函数返回的值,而是
QNaN
的常见表示形式之一,
Quiet Not-a-Number
,表示无效数字的特殊IEEE-754值,不会导致异常(还有
SNaN
信令NaN
,如果启用,将导致浮点异常)。导致这种情况的常见原因是调用参数不在其域中的函数。

它是一个NaN(不是数字)。这意味着您调用了带有否定参数的sqrt


Cheers&hth.,

可以通过检查
x==x
来检测NaN(例如,您拥有的“不确定”和“无限”)(NaN为假,任何有限数为真)。

是否
某些数
可能小于0?告诉我,先生,-1的sqrt是什么?显然,EnabrenTane的意思是,“什么是-1.0的IEEE 754 sqrt?”@Noah Roberts:我很难用浮点数来表示。也许它会返回一个字符:-)我敢打赌原因不是
sqrt(-1)
,而是
sqrt(-1E-20)
左右。当两个近似相等的项几乎取消时会发生这种情况,例如
sqrt(100.0/3.0-(50.0/3.0+50.0/3.0))
。由于FP精度有限,此参数不完全是
0.0
,可能被舍入为负数。是的,许多特定位布局表示相同的“NaN值”。