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