浮動小数点エラー-1。#Jとはどういう意味ですか?
-
20-08-2019 - |
質問
最近、時々(まれに)アプリケーションからデータをエクスポートすると、エクスポートログに<!> 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;正しく思い出せば、浮動小数点数です)
所属していません StackOverflow