Ir para conteúdo
  • Cadastre-se

dev botao

Problemas de arredondamento


Ver Solução Respondido por Ademir P. Voigt,

Recommended Posts

Pessoal, tenho no banco de dados MySQL campos double com 4 casas decimais.

eles são armazenados assim:

99.8085
0.1904
0.0011
Mas, de forma aleatória, ao gerar o XML, ficam assim:
<pGLP>99.8086</pGLP>
<pGNn>0.1905</pGNn>
<pGNi>0.0012</pGNi>
 
Seria o delphi ou o a ACBr quem modifica esses valores? Sendo que eu só passo pro ACBR dessa forma:
 Prod.comb.pGLP := MyQrItensNFepGLP_anp.AsCurrency;            
 Prod.comb.pGNn := MyQrItensNFepGNn_anp.AsCurrency;
 Prod.comb.pGNi := MyQrItensNFepGNi_anp.AsCurrency; 
 
Obs.: Tentei AsFloat sem sucesso. Duas ou tres notas ficam certas e outra gera com problema e o sefaz devolve.
De que forma devo usar o RoundABNT para que o valor 99.8084 fique sendo sempre 99.8084? ele está no banco de dados dessa forma.
Editado por Ademir P. Voigt
Link para o comentário
Compartilhar em outros sites

14 horas atrás, Ademir P. Voigt disse:
Obs.: Tentei AsFloat sem sucesso. Duas ou tres notas ficam certas e outra gera com problema e o sefaz devolve.
De que forma devo usar o RoundABNT para que o valor 99.8084 fique sendo sempre 99.8084? ele está no banco de dados dessa forma.

Provavelmente sua consulta está retornando os valores incorretos, ACBr e o Delphi, mantêm o valor informado.

image.png.dd7f0553795f614ff3a68aab55e33292.png

_____________

Prates, Agnaldo

Link para o comentário
Compartilhar em outros sites

14 minutos atrás, Ademir P. Voigt disse:

Agora a consulta traz sempre correto, mas depois da passagem do pro ACBR o campo do ACBr adicinar um valor na 4ª casa decimal

image.png.0710409c86716269c3bbf5b58bd5f1a3.png

Tente desta forma:

 Prod.comb.pGLP := RoundABNT(MyQrItensNFepGLP_anp.AsCurrency,4);
 Prod.comb.pGNn := RoundABNT(MyQrItensNFepGNn_anp.AsCurrency,4);
 Prod.comb.pGNi := RoundABNT(MyQrItensNFepGNi_anp.AsCurrency,4);

_____________

Prates, Agnaldo

Link para o comentário
Compartilhar em outros sites

  • Solution
4 horas atrás, Agnaldo Prates disse:

Tente desta forma:

 Prod.comb.pGLP := RoundABNT(MyQrItensNFepGLP_anp.AsCurrency,4);
 Prod.comb.pGNn := RoundABNT(MyQrItensNFepGNn_anp.AsCurrency,4);
 Prod.comb.pGNi := RoundABNT(MyQrItensNFepGNi_anp.AsCurrency,4);

Gato pela ajuda. Na verdade com alguns ajustes inetrnos no fonte conseguimos contornar. Mas não estou arredondando, devia ser coisa do delphi.

Link para o comentário
Compartilhar em outros sites

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.