Arredondamento com diferença de 1 centavo

29/03/2017

0

Bom dia.
Estou usando o FormatFloat para deixar um número com duas casas decimais, pois é um valor em real.

Estou fazendo da seguinte forma:

ValorTotal := strToFloat(FormatFloat('###0.00', CalculoValor))	


Um caso que está dando o erro é onde o CalculoValor (que é uma variável do tipo real) está com o valor 77,085. Depois de passar pelo FormatFloat, o ValorTotal fica como 77,09.

O problema é que eu faço esse mesmo cálculo em dois relatórios diferentes, mas que recebem os mesmos valores. Em um relatório o ValorTotal fica como 77,09 e no outro fica 77,08, mesmo que o CalculoValor esteja com o valor 77,085 nos dois casos.

O que pode estar acontecendo?
Natalia

Natalia

Responder

Posts

29/03/2017

Jones Granatyr

Olá! Talvez possa ser algum problema com a função de arredondamento. Chegou a dar uma olhada nesse artigo abaixo?

[url]https://www.devmedia.com.br/rotinas-de-arredondamento-round-roundto-simpleroundto-setroundmode-e-getroundmode/21114[/url]
Responder

30/03/2017

Daniel Araújo

Boa tarde Natalia!

Você está fazendo a formatação da mesma forma nos dois cantos?
Pode postar os dois trechos de código para que eu possa analisar?

Daniel Araújo
Sombra Tecnologia
Consultoria e Desenvolvimento de Sistemas
sombra.tecnologia@gmail.com
55 85 98135-5516
Responder

30/03/2017

Raylan Zibel

Tente usar Currency, em vez de Double.
Responder

31/03/2017

Natalia

Consegui resolver. Essas variáveis que uso no código estavam com o tipo Real. Alterei elas para o tipo Extended e os resultados dos arredondamentos ficaram corretos.
Responder

31/03/2017

Raylan Zibel

Tente usar Currency, em vez de Double.

Consegui resolver. Essas variáveis que uso no código estavam com o tipo Real. Alterei elas para o tipo Extended e os resultados dos arredondamentos ficaram corretos.


Eu sabia que tinha algo assim rs. Só errei os tipos =D
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar