web-dev-qa-db-ja.com

これらのdoubleの戻り値が-1。#INDになるのはなぜですか?

私が持っています :

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

-1。#INDとして返される値があります。それ以外は、1.34543のように、正の値は正常です。

なぜこれが起こるのですか?どうすれば解決できますか?

16
Chai

フレデリックが言うように、それは ' Not a Number 'がWindowsのVisual Studioで構築されたアプリケーションによってフォーマットされた結果です。 John D Cookは 優れた参照 を持っています:

WindowsはNaNを-1。#IND(「不定」の「IND」)として表示しますが、Linuxはnanを表示します。

...

つまり、1。#INFまたはinfを取得した場合は、オーバーフローまたはゼロ除算を探します。 1.#INDまたはnanを受け取った場合は、不正な操作を探してください。

文字列で何らかのフォーマットを行う場合は、切り捨てに注意してください。私は 関連する問題 をこの種のエラーを自分で処理するときに遭遇しました。

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

NaN です。

私の経験では、_-1.#IND_は虚数から来ています。したがって、cout << sqrt(-1.);を実行すると_-1.#IND_が出力されます

3
viraj