Estou em um dilema e gostaria de saber da opini�o de todos voc�s. O que devo
usar em opera��es financeiras e fiscais: arredondamento ou truncamento?

Explicando melhor

Antigamente eu usava sempre truncamento em meus sistemas, ou seja, todas as
vezes que o resultado de um c�lculo apresentava mais que duas casas
decimais, ent�o eu truncava para duas casas (desprezava as casas a partir da
terceira). Exemplos:

1,55 * 3,63 = 5,6265 truncado para 5,62
1,33 * 2,57 = 3,4181 truncado para 3,41
1,33 * 1,22 = 1,6226 truncado para 1,62

Com o tempo percebi que o arredondamento parecia ser mais usado, inclusive
sendo o padr�o em calculadoras e banco de dados (Firebird, por exemplo).
Notei inclusive que o arredondamento do Firebird e das calculadoras �
ligeiramente diferente do arredondamento feito pelo Delphi (isto quando a
�ltima casa tem o n�mero 5). Ent�o passei a usar o arredondamento id�ntico
ao feito pelas calculadoras financeiras.

No Firebird eu fa�o atualmente assim:

CAST(Valor AS NUMERIC(9,2))

E para arredondar no Delphi escrevi a fun��o abaixo:

function TBRound(Value: Extended; Decimals: integer): Extended;
var
  Factor, Fraction: Extended;
begin
  Factor := IntPower(10, Decimals);
  { A convers�o para string e depois para float evita
    erros de arredondamentos indesej�veis. }
  Value := StrToFloat(FloatToStr(Value * Factor));
  Result := Int(Value);
  Fraction := Frac(Value);
  if Fraction >= 0.5 then
    Result := Result + 1
  else if Fraction <= -0.5 then
    Result := Result - 1;
  Result := Result / Factor;
end;

O problema � que h� menos de um m�s fui instalar meu sistema em um cliente
que adquiriu uma impressora fiscal Bematech MP 25 FI. Constatei que nesta
impressora n�o existe mais a op��o de arredondamento, ou seja, todos os
valores com mais de duas casas decimais s�o truncados para apenas duas.

Eu achei isto absurdo, visto que o arredondamento parece ser mais coerente,
inclusive tenho a impress�o de que este comportamento � o padr�o em
opera��es financeiras. Infelizmente n�o tenho como mudar isto, pois � uma
regra definida pelo FISCO (segundo informa��o da Bematech).

Agora estou num dilema:

1. Devo mudar meu sistema completamente para truncamento?
2. Ou mudar apenas o m�dulo que emite cupom fiscal?

Se eu mudar todo o sistema corro o risco de ter problemas com lan�amento de
notas fiscais de entrada. J� imaginou se o fornecedor usar arredondamento e
meu sistema usar truncamento? Provavelmente os totais n�o vai bater. O que
devo fazer?

Qualquer ajuda ser� bem-vinda.

Atenciosamente.

Daniel P. Guimar�es
Tecnobyte inform�tica



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que voc� faz do Yahoo! Grupos est� sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a