Question

Je le code suivant ...

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

Quels sont sorties:

NaN USD

Ce qui donne?

J'utilise Double.NaN pour indiquer que la valeur n'existe pas et ne doit pas être sortie.

Était-ce utile?

La solution

Peut-être que vous cherchez la fonction statique IsNaN?

Essayez quelque chose comme ceci:

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

Autres conseils

Le standard IEEE 754 virgule flottante indique que la comparaison avec NaN NaN sera toujours return false. Si vous devez faire cela, utilisez Double.isNaN ().

Mais, ce n'est pas la meilleure façon de faire ce que vous essayez de faire. Doubles ne sont pas précises, et vous les utilisez pour représenter les prix ici. Je parie que, à un moment donné, vous allez vouloir comparer les prix pour l'égalité, aussi. Cela ne va pas travailler, parce que vous pouvez » t compter sur flottant d'égalité de points.

Vous devriez vraiment regarder en utilisant un certain type entier pour ces valeurs (qui soutient la comparaison d'égalité) plutôt que d'essayer d'utiliser double. Les doubles sont des problèmes scientifiques; pas pour le financement.

À titre d'information: ce que la méthode ne IsNaN() est return v != v;

Double.NaN ne correspond pas à quoi que ce soit, même pas lui-même.

Voir la Double.NaN Champ dans le .NET Framework documentation de la bibliothèque de classe:

  

Utilisez IsNaN déterminer si une valeur   est pas un numéro. Il est impossible de   déterminer si une valeur est pas   nombre en le comparant à un autre   valeur égale à NaN.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top