dimesum

Início / Blog / Engenharia

Engenharia

Por que as contas divididas nunca fecham

· 10 min de leitura · · revisado por Jagadeep Sai

Um saldo compartilhado que não fecha quase sempre se resume a uma de quatro causas, e apenas a primeira é aritmética.

Você está olhando um saldo do grupo, e ele não bate. Talvez por alguns centavos. Talvez por uma conta inteira. A pergunta por baixo é silenciosa mas real: o errado é o app, ou é você?

Aqui vai a resposta tranquila. Quando você divide contas com outras pessoas, um saldo que não fecha quase sempre tem uma de quatro causas, e apenas uma delas é aritmética. As outras três são uma moeda, uma edição e alguém que saiu. Descubra qual é a sua, e a solução deixa de ser um mistério.

As quatro causas

Comece pelo formato do problema. Um saldo compartilhado é um total corrente de quem pagou e quem deve. Ele deveria somar zero no grupo inteiro: cada real que alguém tem a receber é um real que outra pessoa deve. Quando não soma, algo entrou no total que o total não conseguia sustentar.

Então por que as contas divididas não fecham? Em geral por uma de quatro razões. Um centavo foi parar num lugar inesperado quando uma conta não dividia igual. Duas moedas foram somadas como se fossem uma.

Uma conta antiga mudou depois que as pessoas já tinham pago em cima dela. Ou uma pessoa saiu do grupo ainda devendo. Três dessas quatro não têm nada a ver com a sua matemática. Para o panorama mais amplo de como um grupo de fato quita suas dívidas, leia nosso teardown sobre acertar as contas de um grupo.

A tabela nomeia cada causa uma vez, como ela aparece e o que a resolve. Tudo depois dela é a versão longa.

Quatro razões para um saldo compartilhado não fechar

Quatro razões para um saldo compartilhado não fechar
CausaComo apareceO que resolve
ArredondamentoO saldo erra por um ou dois centavos, nunca maisUma regra determinística que sempre manda o centavo que sobra para o mesmo lugar
Uma moedaO total erra por um valor inteiro, ou aparece como um número estranhoManter um saldo separado por moeda e nunca somar entre elas
Uma ediçãoO saldo pulou depois que uma conta antiga mudouRefazer a divisão da conta e lançar a diferença no histórico
Alguém saiuO saldo não chega a zero de jeito nenhumDecidir quem absorve ou perdoa a parte de quem saiu, e então registrar

Arredondamento: o centavo que sobra, e por que ele precisa ser determinístico

Aqui vai o exemplo, e todo número nele é seu para refazer a conta. Lucas, Aiko e Sofia saem para jantar. O jantar é R$100,00, e eles dividem em partes iguais. R$100,00 dividido por três dá R$33,3333 e assim por diante, o que nenhuma moeda consegue pagar. Então a divisão vira R$33,33, R$33,33 e R$33,34.

Some de volta: R$33,33 mais R$33,33 mais R$33,34 dá exatamente R$100,00. As três partes são honestas. Uma delas é um centavo maior.

Esse centavo a mais é o problema inteiro em miniatura. Alguém tem que carregá-lo. Isso é o arredondamento de despesas divididas, e ele tem uma só tarefa: pôr o centavo que sobra num lugar fixo em vez de num lugar aleatório. Se o app atribui ele de novo a cada vez, o mesmo jantar pode produzir R$33,34 para a Aiko hoje e R$33,34 para a Sofia amanhã, e o saldo balança um centavo sem razão visível.

Então tornamos a regra determinística. O centavo a mais vai para quem pagou toda vez. Lucas pagou, então Lucas carrega R$33,34 e os outros dois carregam R$33,33 cada. Lucas tem a receber R$100,00 menos os próprios R$33,34, o que dá R$66,66.

Aiko deve R$33,33. Sofia deve R$33,33. R$33,33 mais R$33,33 dá R$66,66. O grupo soma zero. O arredondamento usou as duas casas decimais do real, a unidade menor fixada para ele no padrão internacional de moedas ISO 4217; a escolha de entregar o centavo a quem pagou é nossa, e sua única virtude é que ela nunca muda.

Uma calculadora online de divisão de contas consegue fazer essa divisão para um jantar. A parte mais difícil é fazer do mesmo jeito para o centésimo, que é também a diferença que nos importa em dividir a conta do restaurante de forma justa. Os contadores discutem há muito tempo sobre qual regra é a mais justa; o padrão comum na computação, arredondar para o par mais próximo, está descrito no padrão IEEE 754. Não precisamos dele aqui, porque nosso centavo não é uma metade.

Três partes de um todo deixam exatamente um centavo sobrando, e a única pergunta é com quem ele fica.

Duas moedas em um grupo, e por que elas não podem ser somadas

Agora uma segunda conta entra no grupo. Aiko paga um táxi, e ele custa ¥6.000. A tentação, para um total cansado, é somar ¥6.000 a R$100,00 e mostrar um único número.

Esse número não significa nada. R$100,00 e ¥6.000 não são o mesmo tipo de coisa, e somar os dois é como somar uma distância a um peso. O iene tem zero casas decimais como unidade menor, o real tem duas, de novo conforme a ISO 4217. Eles nem arredondam do mesmo jeito.

Então mantemos um saldo por moeda. Em reais, nada mudou: Aiko deve R$33,33 a Lucas, e Sofia deve R$33,33 a Lucas. Em ienes, o táxi divide entre três a ¥2.000 cada. Aiko pagou ¥6.000, então Aiko tem a receber ¥6.000 menos ¥2.000, o que dá ¥4.000.

Lucas deve ¥2.000. Sofia deve ¥2.000. ¥2.000 mais ¥2.000 dá ¥4.000. Dois saldos, cada um somando zero, nenhum fingindo ser o outro. Se você quer os modos de falha mais profundos aqui, escrevemos sobre eles em bugs de dinheiro entre moedas.

Uma edição em uma conta antiga, e o que precisa acontecer com o histórico

Terceiro mês. Alguém percebe que o jantar foi registrado errado: era R$120,00, não R$100,00. A pessoa edita. É aqui que saldos que pareciam acertados de repente se mexem, e onde muitos apps silenciosamente erram.

A correção ingênua é sobrescrever o número antigo e recalcular do zero. Mas as pessoas já pagaram em cima da divisão antiga. Se o histórico é reescrito em silêncio, ninguém consegue ver por que agora deve mais. Então a edição tem que refazer a divisão e lançar a diferença, não apagar o passado. R$120,00 dividido por três dá R$40,00 exatos, sem centavo sobrando desta vez.

Cada parte vira R$40,00. Lucas pagou R$120,00, então Lucas tem a receber R$120,00 menos R$40,00, o que dá R$80,00. Aiko deve R$40,00. Sofia deve R$40,00. R$40,00 mais R$40,00 dá R$80,00.

O saldo em reais passou de R$66,66 a receber para R$80,00 a receber, e a diferença, R$13,34, é exatamente rastreável aos R$20,00 que o jantar cresceu: as outras duas partes subiram R$6,67 cada, e R$6,67 mais R$6,67 dá R$13,34. Mantemos o lançamento antigo e adicionamos a correção por cima. Por que uma edição precisa refazer sua divisão, em vez de fingir que o jantar sempre foi R$120,00, é uma história própria em uma edição precisa refazer sua divisão.

Alguém saiu, e o que acontece com o que devia

A quarta causa é uma pessoa, não um número. Digamos que Sofia sai do grupo ainda devendo R$40,00 em reais e ¥2.000 em ienes. Agora o saldo não consegue chegar a zero sozinho, porque uma das pessoas de quem ele depende foi embora.

Isso não é um erro de aritmética, a aritmética está certa. O grupo tem um buraco do tamanho da parte da Sofia.

Há apenas algumas coisas honestas a fazer, e todas são decisões, não cálculos. O grupo pode perdoar o valor, e registrar que foi perdoado. Alguém pode absorvê-lo, e registrar quem. Ou Sofia pode acertar antes de sair.

O que importa é que a escolha fique registrada como um lançamento, para que o saldo marque zero porque algo aconteceu, não porque uma dívida foi apagada em silêncio. Nós nunca decidimos isso por você, registramos a escolha que você faz. A mesma lógica vale para um colega de apartamento que sai no meio de um contrato, o que cobrimos em dividir o aluguel com colegas de quarto.

Como conferir um saldo você mesmo quando divide contas

Você pode auditar tudo isso na mão, e vale a pena saber como. Pegue uma moeda de cada vez, e nunca misture. Para essa moeda, some tudo o que cada pessoa pagou. Some tudo o que cada pessoa devia, parte por parte.

O saldo de uma pessoa é o que ela pagou menos o que ela devia. Faça isso para todo mundo, depois some todos os saldos juntos. A soma tem que ser zero. Se não for, a diferença mostra qual é a sua causa.

Uma diferença de um ou dois centavos é arredondamento; olhe onde o centavo que sobra caiu e confira se ele caiu no mesmo lugar toda vez. Uma diferença do tamanho de uma conta inteira, ou um total que parece impossível, costuma ser uma segunda moeda que foi juntada. Um saldo que mudou desde a última vez que você olhou aponta para uma edição, então abra o histórico da conta.

Um saldo que não fecha de jeito nenhum aponta para alguém que saiu. Quando você divide contas entre amigos, o saldo é sempre só aritmética, então uma diferença teimosa é informação, não azar. Se você prefere ver os números a acreditar na nossa palavra, nosso texto de estatísticas sobre divisão de contas mostra com que frequência cada uma dessas coisas de fato acontece.

O que um livro-razão somente-acréscimo faz sobre as quatro

Por baixo do Dimesum há um livro-razão somente-acréscimo, de partidas dobradas, e ele é público, então nada disso precisa ser aceito por fé. Partidas dobradas significa que todo valor é registrado duas vezes, uma como algo devido e uma como algo a receber, então os dois lados sempre se equilibram; o princípio é mais antigo que o software e está descrito de forma simples no verbete sobre partidas dobradas. Somente-acréscimo significa que nunca sobrescrevemos. Só adicionamos.

Esse único desenho dá conta das quatro causas. O arredondamento é determinístico porque o destino do centavo está escrito na regra de lançamento, não decidido na hora. As moedas ficam separadas porque cada lançamento carrega sua própria moeda e o livro-razão se recusa a somar entre elas. Uma edição vira um novo lançamento de correção que refaz a divisão, então a verdade antiga e a nova sobrevivem as duas; descrevemos esse mecanismo em um livro-razão somente-acréscimo para despesas divididas.

E uma pessoa que sai vira uma decisão registrada, um lançamento como qualquer outro, em vez de uma linha faltando. Registramos tudo isso. Nunca guardamos nem movimentamos o seu dinheiro; o livro-razão é um registro, e o acerto acontece diretamente entre vocês, no menor número de transferências que conseguimos calcular. Se você está comparando ferramentas, nossas notas sobre apps de divisão de contas comparados e apps de divisão de aluguel comparados se limitam ao que cada um faz e não faz.

Um saldo que não fecha não é um veredito sobre a sua amizade ou a sua matemática. É um de quatro pequenos fatos sobre o seu grupo. Abra o Dimesum e o livro-razão vai dizer qual.

Perguntas frequentes

Por que o saldo das minhas despesas divididas não fecha?

Quase sempre por uma de quatro razões: um centavo que arredondou, uma segunda moeda somada por engano, uma conta antiga que foi editada ou um membro que saiu devendo. Só a primeira é aritmética. Escolha uma moeda, some o que cada pessoa pagou menos o que cada uma devia, e o tamanho da diferença mostra qual é a causa.

Com quem fica o centavo que sobra quando a conta não divide igual?

Com quem a regra do app definir, desde que ela diga a mesma coisa toda vez. Um jantar de R$100,00 dividido entre três fica R$33,33, R$33,33 e R$33,34, e esse centavo a mais precisa cair num lugar fixo. O Dimesum manda ele para quem pagou, então o mesmo jantar nunca produz um saldo diferente duas vezes. A regra importa mais do que a escolha.

Dá para somar saldos em duas moedas diferentes?

Não, e nenhum app honesto deveria. R$100,00 e ¥6.000 são coisas de tipos diferentes, com unidades menores diferentes, então somar os dois dá um número que não significa nada. O Dimesum mantém um saldo separado por moeda e nunca junta um no outro. Você acerta cada moeda por conta própria, e é por isso que um grupo pode dever em reais e em ienes ao mesmo tempo.

O que acontece com o saldo quando edito uma conta antiga?

A divisão é refeita e a diferença é lançada como uma nova correção, em vez de o passado ser sobrescrito. Edite um jantar de R$100,00 para R$120,00 e cada parte igual passa de R$33,33 para R$40,00, então o valor devido cresce R$13,34. O lançamento antigo continua visível, a correção fica por cima, e qualquer um consegue rastrear exatamente por que o saldo mudou.

O que acontece quando alguém sai do grupo devendo?

A aritmética continua certa, o grupo só fica com um buraco do tamanho da parte não paga. O saldo não consegue chegar a zero até alguém decidir o que fazer. O valor pode ser perdoado, absorvido por outro membro ou quitado antes da saída, e o que for fica registrado como um lançamento. O Dimesum registra a decisão que você toma, ele nunca decide por você.