Sim, existe vários tópicos já criados sobre isso, mas todos que vi falam de arredondamentos simples, ou tudo pra baixo ou pra cima.
Eu vejo o meu um pouco diferente.
Primeiro: tenho um select que vai me retornar o valor das parcelas
SELECT SUM(V.VEN_TOTAL / F.PAR_NUM) AS PARCELA FROM CONTAS_RECEBER WHERE CODIGO_PEDIDO = :CODIGO
O valor de retorno para uma divisão de R$ 254,40 é R$84,80. Correto.
A questão agora é a seguinte. Tivemos que usar aqui uma função para não arredondar a 3 casa decimal e optaram por usar int da unit System, sendo então que R$ 251,367 iria retornar 251,36 e é isso que preciso, que ignore a 3ª casa mesmo sendo 9 e pegue as 2 casas fixas sem arredondar nem pra cima nem pra baixo. Pelo menos nesse formuláro de nota esta funcionando. Então pegamos e colocamos na geração das parcelas também mas daí acontece um erro que eu não descobri o motivo.
O valor retornado da PARCELA é 84,80 só que quando passa pelo
O valor de retorno é 84,79! Daonde vem esse valor pra baixo?
Eu vi esse post do Micheus e fez entender as funções Tópico só que não posso usar Trunc porque preciso das duas decimais... não posso usar round nem formatfloat porque ele arredonda pra cima e o int está me retornando esse problema. Como resolvo?
edit
Pergunta
DiabloX3
Sim, existe vários tópicos já criados sobre isso, mas todos que vi falam de arredondamentos simples, ou tudo pra baixo ou pra cima.
Eu vejo o meu um pouco diferente.
Primeiro: tenho um select que vai me retornar o valor das parcelas
O valor de retorno para uma divisão de R$ 254,40 é R$84,80. Correto. A questão agora é a seguinte. Tivemos que usar aqui uma função para não arredondar a 3 casa decimal e optaram por usar int da unit System, sendo então que R$ 251,367 iria retornar 251,36 e é isso que preciso, que ignore a 3ª casa mesmo sendo 9 e pegue as 2 casas fixas sem arredondar nem pra cima nem pra baixo. Pelo menos nesse formuláro de nota esta funcionando. Então pegamos e colocamos na geração das parcelas também mas daí acontece um erro que eu não descobri o motivo. O valor retornado da PARCELA é 84,80 só que quando passa pelo O valor de retorno é 84,79! Daonde vem esse valor pra baixo? Eu vi esse post do Micheus e fez entender as funções Tópico só que não posso usar Trunc porque preciso das duas decimais... não posso usar round nem formatfloat porque ele arredonda pra cima e o int está me retornando esse problema. Como resolvo? editMesmo exemplo com a Trunc. O valor da PARCELA = 84,8 quando multiplico por 100 e passo pelo trunc ele devolve 8479 ...
Editado por DiabloX3Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.