none
math.round arredondando com erro RRS feed

  • Pergunta

  • Oi Pessoa,

    Preciso fazer uma operação simples, quantidade * preço unitário arredondando o resultado para 2 casas. Se eu fizer no excel ou em qualquer calculadora o resultado será o mesmo, mas se eu utilizar o math.round o resultado é diferente. Por exemplo se eu fizer 1.057 X 35 isto dá 36.995 que arredondado no excel ou na calculadora é 37.00 mas com o math.round isto dá 36.99.

    Isto está me causando um grande transtorno. Alguém sabe como contornar isso? 

    Grato


    sexta-feira, 19 de fevereiro de 2016 19:45

Respostas

  • O que eu descobri é que o resultado é diferente se vc usa double ou decimal.

    Agora está resolvido, obrigado a todos.

    • Marcado como Resposta Marcos SJ segunda-feira, 22 de fevereiro de 2016 12:39
    sexta-feira, 19 de fevereiro de 2016 21:00

Todas as Respostas

  • Olá Daxxel1,

    veja se te ajuda.

    Excel RoundUp vs .NET Math.Round


    Antero Marques

    sexta-feira, 19 de fevereiro de 2016 19:49
  • Olá Daxxel1,

    Tudo bem?

    Verifique por gentileza se estas informações são úteis para te ajudar a resolver seu problema:

    Link 01

    Link 02

    Link 03

    Espero ter ajudado.

    Atenciosamente


    Marcos SJ

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 19 de fevereiro de 2016 19:57
  • Muito obrigado pela ajuda, mas não resolveu.
    já tentei

    Math.Round(vValor ,vDec ,MidpointRounding.AwayFromZero) 
    e
    Math.Round(vValor ,vDec ,MidpointRounding.toEven)


    e o resultado é sempre o mesmo: 36.99 (nesta operação especifica 1.0570 * 35)

    sexta-feira, 19 de fevereiro de 2016 20:10
  • Boa noite,

    Veja se o link abaixo te ajuda.

    http://www.dotnetperls.com/math-round

    No exemplo do link, é utilizado uma propriedade chamada MidpointRounding.AwayFromZero, que se utilizada no método Math.Round() o retorno do número é o mais longe do 0 (zero). No seu caso ficaria 37,00.

    Abs.

    Bruno Destro


    Dicas de programação em .net, C# e SQL - http://smcode.com.br/

    sexta-feira, 19 de fevereiro de 2016 20:55
  • O que eu descobri é que o resultado é diferente se vc usa double ou decimal.

    Agora está resolvido, obrigado a todos.

    • Marcado como Resposta Marcos SJ segunda-feira, 22 de fevereiro de 2016 12:39
    sexta-feira, 19 de fevereiro de 2016 21:00