Por que a conta da mesa fecha com um centavo a menos
12 de agosto de 2026 · 5 min de leitura
Um problema clássico de software que aparece exatamente onde o cliente confere. E a decisão de modelagem que o elimina.
A conta da mesa dá R$ 100,00. Três pessoas dividem. Cada uma paga R$ 33,33, e sobra um centavo que ninguém deve — mas a mesa não fecha. Todo mundo que já operou salão viu isso, e quase sempre culpa o sistema. A culpa é do sistema, e a causa é mais antiga que ele.
O que acontece por baixo
Computador guarda número decimal em ponto flutuante, um formato que representa muito bem valores em base 2 e mal valores em base 10. `0,1 + 0,2` não dá `0,3` — dá `0,30000000000000004`. Some isso trezentas vezes num turno e o total do caixa passa a divergir da soma das comandas por alguns centavos.
A correção é modelar diferente, não arredondar melhor
A tentação é arredondar em cada operação. Isso empurra o problema: o erro para de aparecer nos casos comuns e volta nos raros, que são os difíceis de reproduzir.
A saída é não ter fração: todo valor é **inteiro, em centavos**. R$ 149,00 é o número 14900. Soma, subtração e comparação passam a ser exatas por construção, e a divisão por 100 acontece só na hora de escrever na tela. A divisão de conta que sobra um centavo continua sobrando — mas agora é uma decisão visível de para quem vai o centavo, e não um erro que ninguém explica.