NaN
# NaN

Em computação, NaN (acrônimo em inglês para Not a Number) é um valor ou símbolo usado nas linguagens de programação para representar um valor numérico indefinido ou irrepresentável. Seu uso sistemático foi introduzido pelo padrão IEEE 754 [en] em 1985, junto com a representação de outras quantidade não finitas tais como infinitos.
A raiz quadrada de um número negativo, que é um número imaginário e portanto não possui representação em números reais ou o valor de 0/0, que também é indefinido dentro dos números reais, são exemplos de valores representados com NaN. Operações matemáticas quando feitas com strings que não podem ser convertidas também podem ser representados como NaN (em JavaScript, por exemplo), dependendo da linguagem de programação usada.

## Ponto flutuante

Em contas de ponto flutuante, NaN é diferente de infinito, ainda que ambos sejam tratados como casos especiais na representação de ponto flutuante de números reais bem como em operações de ponto flutuante. Similarmente, uma operação inválida não é o mesmo que overflow (pode devolver um infinito) ou underflow (devolve o menor número normalizado, um número desnormalizado, ou zero) aritméticos.
Os NaN do IEEE 754 são representados com o campo do expoente preenchido por uns (assim como valores de infinito) e algum número não nulo no significando (para distingui-los de valores de infinito). Essa representação permite a definição de múltiplos valores distintos de NaN, dependendo do valor dos bits no significando e também do valor do bit inicial de sinal; não é necessário, entretanto, um programa descrever um comportamento diferente para esses valores distintos de NaN.

## Representando NaN

Existem diferentes formas de escrever NaN em diferentes sistemas operativos e linguagens de programação: