Ir para conteúdo
  • Cadastre-se

dev botao

Arredondamento Valor que compoe totais da nota


  • Este tópico foi criado há 1709 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Bom dia a todos,

estou com um problema de arredondamento, gostaria de ver a opinião dos amigos.

valoricms.PNG.d236ad3b04b36874591248c9d877521e.PNG

Nessa figura, a soma total fica em 3166,86

Se eu fizer Select sum(VALORICMS) from DetailFiscal WHERE CODSEQ=:CODNOTA  fica 3166,88 por causa dos arredondamentos

Se eu fizer Select sum(Trunc(VALORICMS,2)) from DetailFiscal WHERE CODSEQ=:CODNOTA tambem fica 3166,88

Se eu fizer Select sum(CAST(VALORICMS AS NUMERIC(8,2))) from DetailFiscal WHERE CODSEQ=:CODNOTA fica 3166,89

Como eu poderia fazer para arredondar com o valor correto?

Grato a todos

 

 

 

 

 

 

 

Link para o comentário
Compartilhar em outros sites

17 horas atrás, rodrigoogioni disse:

Boa tarde Leandro, 

Firebird 3.0 e os campos monetarios utilizo Double Precision

 

Grato

Entendi.
No caso, aqui com MySQL usamos o tipo Decimal com escala/precisão de 25,10, ficando: Decimal(25,10), em alguns outros casos para quantidades e outros valores usamos o Double(25,10).

Deixamos o banco gravar um bom número de decimais, mesmo que não use, e tratamos o arredondamento nos cálculos do lado da aplicação usando o método SimpleRoundTo, não tivemos mais problemas com arredondamentos.
As máscaras dos campos também ficam dinâmicas, configuradas na inicialização do sistema conforme uma configuração pré-definida.

Não seria melhor você aumentar a quantidade de casas decimais para o banco gravar e tratar esses arredondamentos no código?
Outra coisa, tem algum outro tipo pra monetário no FireBird?

Editado por Leandro Araújo

Leandro Araújo, Analista de Sistemas.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
Em 11/07/2019 at 08:58, Leandro Araújo disse:

Entendi.
No caso, aqui com MySQL usamos o tipo Decimal com escala/precisão de 25,10, ficando: Decimal(25,10), em alguns outros casos para quantidades e outros valores usamos o Double(25,10).

Deixamos o banco gravar um bom número de decimais, mesmo que não use, e tratamos o arredondamento nos cálculos do lado da aplicação usando o método SimpleRoundTo, não tivemos mais problemas com arredondamentos.
As máscaras dos campos também ficam dinâmicas, configuradas na inicialização do sistema conforme uma configuração pré-definida.

Não seria melhor você aumentar a quantidade de casas decimais para o banco gravar e tratar esses arredondamentos no código?
Outra coisa, tem algum outro tipo pra monetário no FireBird?

Bom dia,

Obrigado pela resposta,

Tem numeric(x,x), mas nao uso este.

Grato

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1709 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...