为什么这些双精度的返回值是-1

Why are the return values of these doubles -1.#IND?

本文关键字:返回值 双精度 为什么      更新时间:2023-10-16

我有:

double score = cvMatchContourTrees( CT1, CT2, CV_CONTOUR_TREES_MATCH_I1, 0.0 );
        cout<<score<<endl;

返回值为-1。#IND。除此之外,正值是正常的,如1.34543。

为什么会发生这种情况?怎么解呢?

正如Frederic所说,这是由windows上使用visual studio构建的应用程序格式化'Not a Number'的结果。John D Cook有一个很好的参考:

Windows显示NaN为-1。#印第安纳州("IND"for "indeterminate"),而Linux显示nan。

简而言之,如果你得到1。#INF或INF,查找溢出或除零。如果你得到1。#IND或nan,查找非法操作

如果对字符串进行格式化,请注意截断;当我自己处理这些类型的错误时,我遇到了相关的问题

std::cout << (0/0.f);
// Output: -1.#IND

南。

根据我的经验,-1.#IND来自虚数。因此,执行cout << sqrt(-1.);应该输出-1.#IND