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.
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.