Ir para conteúdo
  • Cadastre-se

dev botao

ROUNDAbnt - erro ao avaliar valor negativo.


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

Recommended Posts

 

nesta linha:

    ItemCupom.DescAcres := RoundABNT( ADescAcres, -2);

Quando   ADescAcres=-1,95        retorna     -1,94

 

Alteração provisória:

function RoundABNT(AValue: Double; const Digits: SmallInt):Double;
var
   Pow, FracValue, PowValue : Extended;
   RestPart: Double;
   IntCalc, FracCalc, LastNumber, IntValue : Int64;
   ehNegativo:boolean;
Begin
   ehNegativo := AValue<0;
   if ehNegativo then
      AValue := -AValue;
 
   Pow       := intpower(10, abs(Digits) );
   PowValue  := AValue / 10 ;
   IntValue  := trunc(PowValue);
   FracValue := frac(PowValue);
 
   PowValue := FracValue * 10 * Pow ;
   IntCalc  := trunc( PowValue );
   FracCalc := TruncFix( frac( PowValue ) * 100 );
 
   if (FracCalc > 50) then
      Inc( IntCalc )
 
   else if (FracCalc = 50) then
    begin
      LastNumber := round( frac( IntCalc / 10) * 10);
 
      if odd(LastNumber) then
         Inc( IntCalc )
      else
       begin
         PowValue := PowValue * 10;
         RestPart := PowValue - TruncFix(PowValue);
 
         if RestPart > 0.00001 then
            Inc( IntCalc );
       end ;
    end ;
 
   Result := ((IntValue*10) + (IntCalc / Pow));
 
   if ehNegativo then
      Result := - Result;
 
end;

Amarildo Lacerda

Storeware Team

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Oi Amarildo,

Minha equipe pegou aqui o mesmo problema... eu já estava com uma correção, que acabei de enviar para o SVN...

 

  • Curtir 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

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