NaN! O que é? Porque ocorre?

Alguem sabe me dizer o que é NaN expecificamente???

A unica coisa que eu encontrei foi que significa Not a Number > Não é um número! Mas então o que é?
Quando e porque pode ocorrer?

Estou implementando um algoritimo que pode acumular erros de arredondamento e muito possivel que pela incapacidade do registrador armazenar numeros muito pequenos
ele trunque o numero tornando o zero ( por exemplo 0.000000000000709797979 >>> truncou antes do 7 >> 0.00000000000 ) e ai ocorrer divisão por este novo numero que se tornou zero! Seria um dos motivos para ocorrer o NaN?

Obrigado!

Se o problema é acumular valores exatos, use um BigDecimal, não os tipos normais do Java.

Normalmente NaN acontecem como resultado de:

-Qualquer operação com NaN como operando
-Divisões 0/0, infinito / infinito
-Multiplicação 0 x infinito
-Adições com infinitos
-Operações fora de um domínio, como raiz quadrada de negativos.

fonte: Wikipedia