Frage

Ich habe den folgenden Code...

if (Price_Foreign != Double.NaN)
{
   output.Append(spacer);
   output.Append(String.Format("{0,-10:C} USD",Price_Foreign));
}

Welche Ausgaben:

NaN USD

Was gibt?

Ich verwende Double.NaN, um anzuzeigen, dass der Wert nicht existiert und nicht ausgegeben werden sollte.

War es hilfreich?

Lösung

Vielleicht suchen Sie für die IsNaN statische Funktion?

Versuchen Sie etwas wie folgt aus:

if (!Double.IsNaN(Price_Foreign))
{
   output.Append(spacer);
   output.Append(String.Format("{0,-10:C} USD",Price_Foreign));
}

Andere Tipps

Der Gleitkommastandard IEEE 754 gibt an, dass der Vergleich von NaN mit NaN funktioniert stets falsch zurückgeben.Wenn Sie dies tun müssen, verwenden Sie Double.isNaN().

Dies ist jedoch nicht der beste Weg, das zu erreichen, was Sie tun möchten.Doppelte Werte sind NICHT präzise und werden hier zur Darstellung von Preisen verwendet.Ich wette, dass Sie irgendwann auch die Preise vergleichen wollen, um Gleichheit zu gewährleisten.Das wird nicht funktionieren, denn Sie können sich nicht auf die Gleitkommagleichheit verlassen.

Sie sollten wirklich in Erwägung ziehen, für diese Werte einen ganzzahligen Typ zu verwenden (der den Gleichheitsvergleich unterstützt), anstatt zu versuchen, Doubles zu verwenden.Doubles stehen für wissenschaftliche Probleme;nicht für die Finanzierung.

Als Hintergrundinformation: Was ist die IsNaN() Methode tut, ist return v != v;

Double.NaN ist etwas nicht gleich, nicht einmal selbst.

Sehen Sie die Double.NaN Feld in der .NET Framework-Klassenbibliothek Dokumentation:

  

Verwenden Sie IsNaN festzustellen, ob ein Wert   ist keine Zahl. Es ist nicht möglich,   bestimmen, ob ein Wert keine ist   Anzahl indem sie sie zu einem anderen zu vergleichen   Wert gleich NaN.

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