GARANTIR DESCONTO

Fórum Calcular Juros boleto (Diferença entre Delphi e Calculadora) #594692

05/06/2018

0

Olá pessoal bom dia,
Temos um problema aqui na empresa... Quando o boleto do cliente vence, temos que fazer o cálculo via Delphi, só que no final sempre da diferença de centavos e o financeiro vive reclamando que tem que ficar lançando manualmente taxas para fechar os valores.
Por exemplo no Delphi o cálculo é feito da seguinte maneira:
Calculando o Juros:
Vou colocar os valores para ficar mais fácil: 0 := (3276,84*((9,9/30)/100)) = Resultado: 10,82
Ai no caso desse cliente ele atrasou 8 dias então o sistema faz mais um cálculo: 0 := (8*10,82) = 86,56 de Juros
Calculando a Multa: 0:= (3276,84*(2/100)) = Resultado: 65,54
E finalmente: Total := (3276,84+65,54+86,56) = Resultado: 3.428,94

O que acontece? O banco ele calcula que nem o financeiro faz na calculadora
Calculando o Juros:
3276,84*0,33%=*8=86,508576 Resultado: 86,51 (Fica 0,05 centavos diferente do cálculo do Delphi)
Calculando a Multa: 3276,84*2%=65,5368 Resultado: 65,54 (Bate com o Delphi)
Resultado Final: 3276,84+86,51+65,54 = 3.428,89

Desculpa o tamanho do texto, mas quis passar os detalhes para ficar melhor o entendimento.

Se alguém puder me ajudar fico grato.
Wagner Novaes

Wagner Novaes

Responder

Post mais votado

05/06/2018

Olá Wagner.. O seu problema no Delphi está no arredondamento das casas decimais.. Você está usando alguma função que arredonde na hora de calcular? Se usar esse mesmo valor seu, em um dos exemplos, sem arredondamento, os valores coincidem com o da calculadora que seria 10,813572 e você apresentou 10,82 que ao final com certeza vai dar diferença.

Jerson Boer

Jerson Boer
Responder

Gostei + 1

Mais Posts

05/06/2018

Wagner Novaes

Jerson primeiramente obrigado por tirar um tempo para poder me ajudar...
Foi isso mesmo, eu estava arredondando o valor para Multiplicar*8 por isso estava dando a diferença.

Agora bateu, eu tinha que multiplicar * 10,813572

Foi uma falta de atenção,
Grato,
Wagner
Responder

Gostei + 0

05/06/2018

Raimundo Pereira

Tente :
uses
Math,

var
Dias_Atraso    :Real;
Valor_Original :Real;
Percet_Dia     :Real;

Juros          :Real;
Multa          :Real;
Novo_Valor     :Real;

begin

Dias_Atraso    := 0;
Valor_Original := 0;
Percet_Dia     := 0;

Juros          := 0;
Multa          := 0;
Novo_Valor     := 0;

        Dias_Atraso:=8;
        Valor_Original:=3276.84;

// Se   Percet_Dia:=0.33; apresenta erro
        Percet_Dia:=0.3303;


        Juros:=(Valor_Original)*(Percet_Dia)/100;
        Juros:=RoundTo(Juros,-2)*Dias_Atraso;

        Multa:=Valor_Original*2/100;
        Multa:=RoundTo(Multa,-2);

        Novo_Valor:=(Valor_Original)+(Juros)+(Multa);
        Novo_Valor:=RoundTo(Novo_Valor,-2);

end;
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar