DFe.NET
DFe.NET copied to clipboard
Arredondamento DFe.Classes e NFe.Classes
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 !!!!
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.
https://github.com/OpenAC-Net/OpenAC.Net.Core/blob/main/src/OpenAC.Net.Core/Extensions/DecimalExtensions.cs
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 :)