6

具体的には:

私はいくつかの数学演算を行っていますが、広く使用されている double がたまたま値を取得するため、アプリケーションがクラッシュし続けます。不定?無限?大きすぎて収まらない?完全な平方根ではありませんか? これを解決する方法はありますか?前もって感謝します!編集: double にこの値があるかどうかを確認するにはどうすればよいですか? 私は試しました: if (x == 0x-1.#IND000000000000) および他のバリエーションが機能しませんでした。変数にこの値があるかどうかを確認することはできますか?

4

6 に答える 6

10

実際には、文字列-1.#IND000000000000は関数によって返される値ではありませんが、例外を引き起こさない、無効な数値を表す特別なIEEE-754値である、の一般的な表現の1つです(、、もありQNaNます)。有効にすると、浮動小数点例外が発生します)。これの一般的な原因は、そのドメイン外で引数を使用して関数を呼び出すことです。Quiet Not-a-NumberSNaNSignalling NaN

于 2011-01-14T06:31:00.933 に答える
5

NaN(「不確定」や「無限」など)は、チェックすることで検出できますx == x(NaNの場合はfalse、有限数の場合はtrueです)。

于 2011-01-16T01:14:46.270 に答える
2

#IND000000000000は無効な数値を表します。これは、不確定なタイプを表しますが、計算が失敗しないため、QNaN(Quiet Not-A-Number)値と呼ばれることがよくあります。

おそらく、あなたが決定しようとしている平方根がの数であり、その値が定義されていない、とらえどころのない数です。詳細については、ウィキペディアを参照してください。

それを解決するには、まず問題が発生している場所を特定する必要があります。つまり、デバッガーを使用してステップスルーし、変数の値を監視するか、コードを投稿して同じことができるようにする必要があります。

于 2011-01-14T06:30:57.790 に答える
1

引数が負の場合、ドメインエラーが発生し、グローバル変数errnoが値EDOMに設定されます。

于 2011-01-14T06:25:25.887 に答える
0

これはNaN(数値ではありません)です。これは、負の引数を指定してsqrtを呼び出したことを意味します。

乾杯&hth。、

于 2011-01-14T06:31:07.033 に答える
0

複合型を使用しない場合、0 未満の値の sqrt は例外を引き起こすことを意味します。

于 2011-01-14T06:17:53.390 に答える