Publicado 7 de outubro de 2026 · 6 min de leitura

Ponto Flutuante vs Centavos Inteiros em Cronogramas ASC 606

O que o ponto flutuante binário faz com cronogramas de receita, por que a regra de arredondamento pesa mais e como a aritmética de inteiros torna um cronograma reexecutável.

Soluqube Editorial
Conteúdo técnico contábil

O que o ponto flutuante binário faz com dinheiro?

A maioria dos softwares armazena números em ponto flutuante binário de 64 bits (double na maioria das linguagens, number em JavaScript). Frações decimais como 0.1 ou 0.01 não têm representação binária exata:

0.1 + 0.2 === 0.30000000000000004 // true

O erro é minúsculo, em torno de uma parte em 10^16, muito abaixo de um centavo em qualquer contrato realista. Sozinho, raramente altera um valor depois de arredondado ao centavo. Ele importa quando resultados são comparados por igualdade exata ou quando muitos valores não arredondados são acumulados e só arredondados no final.


De onde os centavos inexplicados realmente vêm?

Da regra de arredondamento. $100,000 em 36 meses dá $2,777.777... por mês. Arredonde cada mês para $2,777.78 e o cronograma reconhece $100,000.08; arredonde cada mês para baixo e ele reconhece $99,999.72. Isso acontece também com aritmética decimal: é uma questão de política, não de hardware.

Alguns centavos estão muito abaixo da materialidade, e os auditores gastam seu tempo com o julgamento do SSP, modificações e corte (cutoff), não com centavos. O motivo para resolver os centavos é mecânico: se o cronograma não soma o valor do contrato, o saldo diferido nunca chega a zero, alguém lança um ajuste de acerto e o próximo revisor precisa explicá-lo. O guia do centavo residual trata da mesma questão para a própria alocação do SSP.


Como a aritmética de inteiros e uma regra de período terminal resolvem isso?

Armazene os valores como inteiros em uma escala fixa, trunque cada período para baixo ao centavo e deixe o último período absorver o que sobrar. A Soluqube trabalha com 10^6 unidades por dólar e arredonda ao centavo:

const SCALE = 1_000_000n;            // 10^6 units per dollar
const CENT = SCALE / 100n;
const total = 100_000n * SCALE;      // $100,000.00
const months = 36n;

const monthly = (total / months / CENT) * CENT;  // floor to the cent: $2,777.77
const last = total - monthly * (months - 1n);    // final month: $2,778.05
// 35 x $2,777.77 + $2,778.05 = $100,000.00

Toda execução com as mesmas entradas gera os mesmos centavos, de modo que um revisor pode refazer o cronograma. Experimente outros valores e prazos no simulador de cronograma.


O que isso comprova e o que não comprova?

Comprova que o cronograma fecha com o valor do contrato e que o resultado é reproduzível. Não comprova que os julgamentos contábeis estão corretos: se as obrigações são distintas, se os preços de venda individuais são sustentáveis ou como uma modificação deve ser tratada. É aí que vai o tempo de auditoria; veja o exemplo de alocação do SSP e o hub ASC 606.

Tags contábeis:ASC 606Rounding PolicyRevenue SchedulesInteger Arithmetic