Pregunta

Tengo el siguiente código ...

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

que da salida:

NaN USD

Lo que da?

Estoy usando Double.NaN para indicar que no existe el valor, y no debe ser la salida.

¿Fue útil?

Solución

Tal vez usted está buscando para la función estática IsNaN?

Trate algo como esto:

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

Otros consejos

El IEEE 754 de punto flotante estándar establece que la comparación con NaN NaN siempre return false. Si debe hacerlo, usar Double.isNaN ().

Sin embargo, esta no es la mejor manera de hacer lo que estás tratando de hacer. Dobles no son precisos, y que está utilizarlos para coincidir con los precios aquí. Estoy apostando a que en algún momento, vas a querer comparar precios de igualdad, también. Eso no va a funcionar, porque se puede' t se basan en la igualdad de punto flotante .

Usted debe realmente mirar en el uso de algún tipo entero para estos valores (que soporte comparación de igualdad) en lugar de tratar de usar dobles. Dobles son para problemas científicos; no para las finanzas.

Como antecedente: lo que hace el método IsNaN() es return v != v;

Double.NaN no es igual a nada, ni siquiera a sí mismo.

Vea la Double.NaN Campo en la documentación de la biblioteca de clases .NET Framework:

  

isNaN a determinar si un valor   no es un número. No es posible   determinar si un valor no es una   número comparándolo con otro   valor igual a NaN.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top