Calculadora de desconto
Veja quanto você vai pagar de fato com um desconto percentual: 15% sobre 19,99 economiza 3,00 e deixa o preço em 16,99, exato no centavo. Útil para promoções, prévias de checkout e lição de casa. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Preço
- 100.00
- Percentual
- 10
- Valor do desconto
- 10.00
- Preço final
- 90.00
Compradores e lojas buscam uma calculadora de desconto que transforme preço original e porcentagem em economia e preço final claros.
Do preço e da porcentagem à economia e ao preço final
Quem compra e quem vende costuma precisar das mesmas duas respostas: quanto um desconto percentual tira e quanto sobra para pagar. Digite o preço original e a porcentagem de desconto, e a calculadora devolve o valor do desconto e o preço final. Um preço de 100,00 com 10% de desconto dá 10,00 de desconto e preço final de 90,00; 19,99 com 15% dá 3,00 e 16,99. Lojas usam isso para conferir preços antes de publicar uma promoção, telas de pagamento para mostrar a economia de um cupom com porcentagem simples, e estudantes para conferir exercícios com respostas exatas no centavo.
Por que cada resultado é exato no centavo
O preço vira primeiro centavos inteiros, assim nenhuma fração de centavo entra na conta. O desconto é o preço em centavos vezes a porcentagem dividido por 100, arredondado para cima na metade, e depois é subtraído do preço original para dar o preço final. Isso bate com o arredondamento comum do varejo, e os dois valores saem sempre com exatamente duas casas decimais. Para o resultado ser confiável, o preço deve ter no máximo duas casas decimais ou ser inteiro, sem zeros à esquerda nem sinal de mais, e a porcentagem precisa ser um inteiro de 0 a 100. O resto é recusado em vez de corrigido em silêncio.
Entrada de dinheiro canônica
Envie o preço como string com 1–2 decimais ou inteiro não negativo. Rejeita float, zeros à esquerda e mais de dois decimais.
Porcentagem de 0 a 100
O desconto é inteiro 0…100. Strings só de dígitos são aceitas.
Half-up no centavo
discount = half-up de preço×percent/100 em centavos; final = preço − desconto. Ex.: 19.99 a 15% → desconto 3.00 e final 16.99, alinhado ao arredondamento comercial comum de vitrine.
Casos de uso
Promoções
Mostre preços finais de campanhas percentuais.
Checkout
Estime economia de cupons simples.
Estudos
Confira exercícios de desconto ao centavo.
Perguntas frequentes
Como calculo 15% de desconto sobre 19,99?
Digite 19,99 como preço e 15 como porcentagem. O desconto fica em 3,00 e o preço final em 16,99, arredondados ao centavo do jeito que a maioria das lojas faz.
Como o desconto é arredondado?
Ao centavo, para cima quando fica exatamente na metade. A conta é feita em centavos inteiros, então 15% de 19,99 dá um desconto de exatamente 3,00.
Quais porcentagens de desconto posso usar?
Números inteiros de 0 a 100. Uma porcentagem com casas decimais, ou fora dessa faixa, é recusada com uma mensagem clara em vez de ser ajustada sem aviso.
Como devo digitar o preço?
Com no máximo duas casas decimais, como 19,99, ou como número inteiro. Zeros à esquerda, sinal de mais ou mais de duas casas decimais são recusados, para que um erro de digitação não mude o resultado.
Ferramentas relacionadas
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/dev/discount-calculator \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"price":"100.00","percent":10}'const res = await fetch("https://api.kit.forhosting.com/dev/discount-calculator", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"price": "100.00",
"percent": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/discount-calculator",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"price": "100.00",
"percent": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/discount-calculator", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"price":"100.00","percent":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"price":"100.00","percent":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/discount-calculator", 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
{
"price": "100.00",
"percent": 10
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.discount_calculator",
"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.
Limites
max_price_cents | 999999999999999 |
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. |
Notas técnicas
Saídas estáveis
price, discount_amount e final_price saem como strings com dois decimais; percent como inteiro.
Casos de integração
CI
Asserte discount e final em golden.
Perguntas técnicas
Como arredonda?
Half-up no centavo.
Aceita float?
Não; string ou inteiro.
Faixa de %?
Inteiros 0 a 100.
Saída é float?
Não; strings NN.NN.
Preço negativo?
invalid_input.
É grátis?
Sim no navegador; app US$ 0,002.