Ir para conteúdo
  • Cadastre-se

dev botao

PCN2\pcnGerador.pas


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

Recommended Posts

Colegas,

Linha 669 do arquivo Fontes\PCN2\pcnGerador.pas:

Conteúdo atual:


                  if StrToIntDef(Copy(ConteudoProcessado, pos(DecimalSeparator, ConteudoProcessado) + NumeroDecimais + 1, 6),0) > 0 then

                    walerta(ID, Tag, Descricao, ERR_MSG_MAXIMO_DECIMAIS + ' ' + IntToStr(NumeroDecimais));
Problema: Quando o valor é inteiro, pos(DecimalSeparator,ConteudoProcessado) = 0, e dessa forma, o alerta é sempre gerado. Sugestão: Verificar diretamente na variável float valor se o número de casas decimais excede NumeroDecimais:

                  if not SameValue(Abs(Frac(valor*Power(10,NumeroDecimais))), 0.0, {epsilon = }0.0000001) then

                    walerta(ID, Tag, Descricao, ERR_MSG_MAXIMO_DECIMAIS + ' ' + IntToStr(NumeroDecimais));

Nota: Em tese, o valor de Abs(Frac(valor*Power(10,NumeroDecimais))) deveria ser exatamente igual a zero, caso não hajam mais casas decimais do que o esperado. Mas é sabido que comparações do tipo == com floats são problemáticas.

Nota 2: Tem que adicionar a unit Math nos uses.

Abraços.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4889 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.