为什么这些的返回值加倍-1。#IND?

时间:2011-09-19 19:23:54

标签: c++ visual-studio-2008 visual-c++ opencv

我有:

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

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

为什么会这样?我该如何解决?

3 个答案:

答案 0 :(得分:15)

正如弗雷德里克所说,这是“Not a Number”由在Windows上使用visual studio构建的应用程序格式化的结果。 John D Cook有一个excellent reference

  

Windows将NaN显示为-1。#IND(“IND”表示“indeterminate”),而Linux显示为nan。

     

...

     

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

如果您使用字符串进行任何格式化,请注意截断;我自己处理这些错误时遇到了related issues

答案 1 :(得分:5)

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

这是NaN

答案 2 :(得分:3)

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