質問

最近、時々(まれに)アプリケーションからデータをエクスポートすると、エクスポートログに<!> quot; -1。#J <!> quot;のようなfloat値が含まれます。私はそれを再現することができなかったので、フロートがバイナリでどのように見えるか、またはVisual Studioがそれをどのように表示するかわかりません。

printfのソースコードを調べてみましたが、何も見つかりませんでした(正しいバージョンを見て100%確かではありませんが...)。

グーグルで試しましたが、グーグルは#を捨てます。フロートエラーのリストが見つかりません。

役に立ちましたか?

解決

負の無限大またはNaN(数値ではない)のいずれかです。フィールドの書式設定により、printfはそれらを区別しません。

Visual Studio 2008で次のコードを試しました:

double a = 0.0;
printf("%.3g\n", 1.0 / a);  // +inf
printf("%.3g\n", -1.0 / a); // -inf
printf("%.3g\n", a / a);    //  NaN

次の出力になります:

1.#J
-1.#J
-1.#J

.3書式指定子を削除すると、次の結果が得られます。

1.#INF
-1.#INF
-1.#IND

0/0がNaNを、-1 / 0が負の無限大を与えるのは明らかです(NaN、-inf、+ infのみが<!> quot; erroneous <!> quot;正しく思い出せば、浮動小数点数です)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top