Tipos numéricos no Clojure
1. Inteiros (Integers)
Por padrão, números inteiros são lidos como long (64-bit) se estiverem dentro do intervalo suportado. Se o valor exceder essa capacidade, o Clojure promove automaticamente para precisão arbitrária.
- Padrão:
42,-1,0. - BigInt (Precisão Arbitrária):
42N. O sufixoNforça o uso de precisão arbitrária mesmo para números pequenos.
O Clojure suporta sintaxes herdadas do Java e uma notação genérica para bases arbitrárias:
- Hexadecimal:
0xff(prefixo0x). - Octal:
040(prefixo0).
2. Ponto Flutuante (Floating Point)
Por padrão, são lidos como precisão dupla (double de 64-bit). Suportam notação científica.
- Padrão:
3.14,1.2e-5. - BigDecimal (Precisão Exata):
0.01M. O sufixoMcria um decimal de precisão arbitrária, crucial para evitar erros de arredondamento em cálculos financeiros.
Valores Simbólicos Especiais:
##Inf: Infinito Positivo.##-Inf: Infinito Negativo.##NaN: “Not a Number” (Não é um número).
3. Ratios (Racionais)
O Clojure possui um tipo nativo para frações, armazenando numerador e denominador separadamente para manter a precisão absoluta.
Exemplo: 22/7, 1/3.
NOTE
O sistema não simplifica para ponto flutuante prematuramente.