Frage

Vor kurzem manchmal (selten), wenn wir Daten aus unserer Anwendung exportieren, enthält das Exportprotokoll Float-Werte, die aussehen „-1. # J“. Ich habe es nicht so in der Lage zu reproduzieren, ich weiß nicht, was der Schwimmer wie in binärem aussieht, oder wie Visual Studio zeigt sie an.

habe ich versucht, auf dem Quellcode für printf gesucht, aber nichts gefunden (nicht 100% sicher, dass ich an der richtigen Version sah aber ...).

Ich habe versucht, googeln, aber Google wirft jede # weg, wie es scheint. Und ich kann keine Listen von Float Fehler finden.

War es hilfreich?

Lösung

Es kann entweder negative Unendlichkeit oder NaN (keine Zahl) sein. Durch die Formatierung auf dem Feld printf unterscheidet nicht zwischen ihnen.

Ich habe versucht, den folgenden Code in 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

, welche Ergebnisse in der folgenden Ausgabe:

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

Entfernen der 0,3-Formatierung Spezifikations gibt:

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

so ist es klar, 0/0 gibt NaN und -1/0 gibt negative Unendlichkeit (NaN, -inf und + inf ist die einzige "fehlerhafte" Gleitkommazahlen, wenn ich mich richtig erinnere)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top