Divida uma despesa compartilhada em cotas desiguais
Dividir igualmente é simples, mas nem sempre é justo. Colegas de moradia podem ocupar quartos de tamanhos diferentes, viajantes podem ficar quantidades distintas de noites e familiares podem combinar contribuições conforme a renda.
Executar grátis
Esta calculadora distribui uma despesa comum usando um peso para cada pessoa. Informe o total, os nomes e os pesos relativos para receber cada valor devido com arredondamento consistente. Os pesos podem representar qualquer critério acordado, e as alocações finais sempre voltam a somar o total arredondado.
Escolha pesos que representem o acordo
Um peso é uma cota relativa, não necessariamente uma porcentagem ou um valor monetário. Se três pessoas usarem pesos 1, 2 e 3, elas deverão um sexto, dois sextos e três sextos do total. Multiplicar todos os pesos pelo mesmo número não altera o resultado; portanto, 10, 20 e 30 descrevem exatamente o mesmo acordo. Isso torna a calculadora útil para aluguel conforme o tamanho do quarto, contas conforme a ocupação, reservas de grupo conforme as noites de estadia ou despesas domésticas conforme a renda. Definam o significado dos pesos antes do cálculo e usem a mesma base para todas as pessoas. Alguém pode ter peso zero quando estiver intencionalmente isento dessa despesa específica. Entretanto, o conjunto precisa conter pelo menos um valor positivo. Se todos forem zero, não existe base matemática para distribuir o total; por isso, a calculadora retorna um erro de entrada em vez de inventar uma divisão igual. Os nomes também devem ser únicos, para que o resultado continue claro ao ser copiado para uma mensagem ou registro contábil.
Entenda o arredondamento e os totais exatos
A divisão proporcional frequentemente produz frações menores que a unidade monetária que pode ser paga. Por exemplo, dividir uma conta pequena entre três cotas ponderadas pode gerar decimais periódicos. A calculadora primeiro converte o total para a precisão decimal escolhida, calcula cada parcela proporcional exata e atribui as menores unidades restantes pelo método dos maiores restos. As pessoas cujos valores não arredondados apresentam os maiores restos fracionários recebem essas unidades primeiro. Se dois restos forem iguais, a ordem original de entrada desempata, garantindo resultados determinísticos em execuções repetidas. Na prática, os valores exibidos sempre somam o total mostrado: nenhum centavo desaparece ou surge. Use duas casas para moedas como dólar ou euro, zero para contabilização em unidades inteiras ou mais precisão quando a quantidade compartilhada permitir. O valor `share` descreve a proporção matemática, enquanto `owed` é o montante pagável após o arredondamento. Como o próprio total é arredondado na precisão solicitada, informe-o conforme a precisão aceita no seu processo de acerto.
Revise e comunique o resultado
Considere o cálculo uma implementação transparente do acordo do grupo, não o próprio acordo. Antes de cobrar, confira o total, a soma dos pesos e o peso de cada pessoa. Um erro como 20 no lugar de 2 é matematicamente válido, mas pode alterar radicalmente a distribuição. A resposta mostra a cota normalizada e o valor devido junto de cada nome, facilitando explicar como o resultado foi obtido. Guarde as entradas originais com a saída quando a divisão for importante para a contabilidade, pois os pesos fornecem contexto que os valores devidos isoladamente não mostram. Em despesas recorrentes, mantenha a regra de ponderação estável e atualize-a abertamente quando as circunstâncias mudarem. A versão no navegador é conveniente para aluguel, jantar, viagem ou conta eventual; a API aplica a mesma regra determinística em gestão imobiliária, organização de viagens, planilhas ou finanças internas por US$ 0,002 por solicitação. Não há consulta de câmbio nem transferência de pagamento: todos os valores devem usar uma única unidade, e a calculadora apenas retorna a alocação.
Casos de uso
Dividir aluguel pelo tamanho do quarto
Use a área relativa ou uma pontuação acordada para distribuir um aluguel entre colegas de moradia.
Compartilhar viagem por noites
Pondere viajantes pelas noites em que participaram para que estadias mais curtas paguem menos.
Alocar despesas domésticas por renda
Use pesos de renda acordados para distribuir uma conta comum com matemática transparente.
Perguntas frequentes
Os pesos precisam somar 100?
Não. Eles são relativos e podem somar qualquer número positivo.
O que acontece se todos os pesos forem zero?
A solicitação retorna um erro de entrada, pois não é possível calcular uma divisão proporcional com soma zero.
Uma pessoa pode ter peso zero?
Sim. Ela deverá zero, desde que pelo menos outra pessoa tenha peso positivo.
Os valores devidos fecharão exatamente o total?
Sim. O método dos maiores restos distribui as unidades de arredondamento para que as alocações somem o total na precisão escolhida.
Quanto custa a API?
Cada solicitação à API custa US$ 0,002. A calculadora da página pode ser executada localmente sem custo.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/calc3/split-expenses-unequal-shares \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"total":120,"people":[{"name":"Alex","weight":1},{"name":"Blair","weight":2},{"name":"Casey","weight":3}]}'const res = await fetch("https://api.kit.forhosting.com/calc3/split-expenses-unequal-shares", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"total": 120,
"people": [
{
"name": "Alex",
"weight": 1
},
{
"name": "Blair",
"weight": 2
},
{
"name": "Casey",
"weight": 3
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/calc3/split-expenses-unequal-shares",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"total": 120,
"people": [
{
"name": "Alex",
"weight": 1
},
{
"name": "Blair",
"weight": 2
},
{
"name": "Casey",
"weight": 3
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/calc3/split-expenses-unequal-shares", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"total":120,"people":[{"name":"Alex","weight":1},{"name":"Blair","weight":2},{"name":"Casey","weight":3}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"total":120,"people":[{"name":"Alex","weight":1},{"name":"Blair","weight":2},{"name":"Casey","weight":3}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/calc3/split-expenses-unequal-shares", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"total": 120,
"people": [
{
"name": "Alex",
"weight": 1
},
{
"name": "Blair",
"weight": 2
},
{
"name": "Casey",
"weight": 3
}
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "calc3.split_expenses_unequal_shares",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |