2008-12-12 11 views

Respuesta

6

Agregar un número a NaN da NaN. No se espera que cause una excepción. Entiendo que esto cumple con IEEE 754.

0
public static void main(String args[]) 
{ 
    Double d = Double.NaN + 1.0; 
    System.out.println(d); 
} 

imprime Double.Nan. ¿Alguien puede explicar la implementación de la fuente?

public static final double POSITIVE_INFINITY = 1.0/0.0; 
    public static final double NEGATIVE_INFINITY = -1.0/0.0; 
    public static final double NaN = 0.0d/0.0; 
+0

Por definición, 0/0 = NaN. Ver http://en.wikipedia.org/wiki/NaN. –

+0

Eh, no vi que la respuesta de Gamecat se estuviera refiriendo a esta. –

1

Para responder a la pregunta de Steve B:

POSITIVE_INFINITY es el mayor número algo positivo que puede almacenar si tiene espacio de almacenamiento ilimitado. Sin este lujo, tenemos que usar una construcción como 1.0/0.0 que hace un buen trabajo. Igual va para NEGATIVE_INFINITY pero luego el número negativo más grande.

NaN normalmente se define como 0.0/0.0 porque no existe un número como 0/0, por lo que califica perfectamente para un NaN.

Cuestiones relacionadas