Open ricardopdv opened 2 years ago
Fala Ricardo, pessoalmente utilizo o padrão da ABNT de arredondamentos... que pelo que sei é o correto de ser utilizado! segue meu código
public static decimal RoundABNT(this decimal dec, int digits)
{
return Math.Round(dec, digits, MidpointRounding.ToEven);
}
Não utilizo do Zeus, pelo que vi ele usa o MidpointRounding.AwayFromZero Agora não sei se o correto é .ToEvent ou como o do zeus :/
Fala Ricardo, pessoalmente utilizo o padrão da ABNT de arredondamentos... que pelo que sei é o correto de ser utilizado! segue meu código
public static decimal RoundABNT(this decimal dec, int digits) { return Math.Round(dec, digits, MidpointRounding.ToEven); }
Não utilizo do Zeus, pelo que vi ele usa o MidpointRounding.AwayFromZero Agora não sei se o correto é .ToEvent ou como o do zeus :/
Show vou testar aqui. So mandei a issue mesmo por conta de ter a mesma funcao se comportando de maneira diferente em duas libs. pode acabar causando com outros o que aconteceu comigo.
Uso um código igual o Round dele , mas dei contrl c é v somente pra não ter que referenciar a lib toda. No meu caso já deu BO por causa do round do C# , sefaz já me recusou por centavo de diferença o round do C# puro não faz corretamente o padrão ABNT é raríssimo acontecer mas aconteceu duas vezes com nós aqui da empresa, usamos esse código é funcionou perfeito.
Fiz um programa comparando o exemplo que dei com esse passado, o resultado foi o mesmo... acredito que o correto é padronizar essa questão para ter apenas 1 arredondamento. Vou verificar e já falo.
Precisamos unificar os arredondamentos do Zeus :)
Olá, pessoal!
Agradecemos a abertura da issue e a discussão em torno do problema de arredondamento nas classes DFe e NFe. Observamos que existe uma diferença significativa no comportamento da função de arredondamento nas duas bibliotecas, que pode causar inconsistências nos cálculos.
Atualmente, a implementação da função de arredondamento na classe DFe.Classes utiliza o padrão padrão de arredondamento, enquanto a classe NFe.Classes aplica o MidpointRounding.AwayFromZero. Isso realmente pode levar a resultados divergentes, como você notou na operação de 0.35 * 15.90, que retorna resultados diferentes nas duas classes.
Para garantir que nossos cálculos sejam consistentes e atendam aos padrões requeridos, vamos padronizar o método de arredondamento em ambas as bibliotecas. Foi criando uma tarefa no backlog da Zeus para implementar essa melhoria e assegurar que o comportamento do arredondamento siga o padrão ABNT, utilizando o MidpointRounding.ToEven, conforme discutido. Assim, todos os cálculos realizados nas notas fiscais estarão alinhados e reduzirão as chances de rejeição por discrepâncias de arredondamento.
Estamos trabalhando para implementar essa melhoria e garantir que o comportamento do arredondamento seja consistente em toda a biblioteca.
Obrigado pelo feedback e por ajudar a melhorar a biblioteca!
ola pessoal tem um tempo que nao me comunico. tudo corre bem com a lib gracas a Deus !.
Tenho tido um problema em algumas notas fiscais e notei que no meu programa estou usando a funcao arredondamento de dois locais diferentes. A Arredondar do dfe.classes na conta 0.35 * 15.90 me retorna 5.56 Ja na Arredondar da nfe.classes a mesma conta retorna 5.57 A conta dá 5.565 acredito que a primeira esteja truncando e a segunda arredondando. Nao sei se isso foi visto mas vou usar a da nfe.
Caso ajude em algo. Agradeco a todos pois a lib é sensacional !!!!