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 sufixo N forç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 (prefixo 0x).
  • Octal: 040 (prefixo 0).

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 sufixo M cria 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.

Referências


https://clojure.org/guides/learn/syntax#_numeric_types