DFe.NET icon indicating copy to clipboard operation
DFe.NET copied to clipboard

Arredondamento DFe.Classes e NFe.Classes

Open ricardopdv opened this issue 2 years ago • 6 comments

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 !!!!

ricardopdv avatar Jun 08 '22 20:06 ricardopdv

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 :/

danilobreda avatar Jun 12 '22 06:06 danilobreda

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.

ricardopdv avatar Jun 12 '22 11:06 ricardopdv

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.

robertorp avatar Jun 13 '22 18:06 robertorp

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.

danilobreda avatar Aug 15 '22 18:08 danilobreda

Precisamos unificar os arredondamentos do Zeus :)

danilobreda avatar Mar 24 '23 00:03 danilobreda