• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Slammer

[Dúvida] Math.Round

13 mensagens neste tópico

Boa tarde,

venho aqui colocar uma dúvida para ver se alguém me pode ajudar. A duvida e a seguinte:

Na minha aplicação uso o Math.Round para arredondar alguns valores, por exemplo: Math.Round(0.605) retorna-me o valor "1".

Não conhecem nenhuma maneira de eu conseguir o valor "0.61"?

Muito obrigado e espero por resposta

Abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Math.Round(3.44, 1) 'Returns 3.4.

Math.Round(3.45, 1) 'Returns 3.4.

Math.Round(3.46, 1) 'Returns 3.5.

Math.Round(4.34, 1) ' Returns 4.3

Math.Round(4.35, 1) ' Returns 4.4

Math.Round(4.36, 1) ' Returns 4.4

Tem a ver com o valor anterior ser par ou ímpar

se for par arredonda para baixo, se for ímpar arredonda para cima

O comportamento desse método segue o padrão IEEE 754

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então não deve haver grande volta a dar,  vou continuar a investigar para ver no que dá.

Caso encontre alguma coisa posto aqui, até lá obrigado pelo ajuda.

Abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Slammer qual é o problema? Queres que arredonde sempre para cima?

Já experimentas-te:

Math.Round(0.605, 2, MidpointRounding.AwayFromZero);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Slammer qual é o problema? Queres que arredonde sempre para cima?

Já experimentas-te:

Math.Round(0.605, 2, MidpointRounding.AwayFromZero);

Já tinha experimentado mas dá-me erro no MidpointRounding, diz que não existe no contexto. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já tinha experimentado mas dá-me erro no MidpointRounding, diz que não existe no contexto. ;)

:hmm:

Estás a usar o .NET 1.1 ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:hmm:

Estás a usar o .NET 1.1 ?

Não, estou a utilizar  .NetCompactFrameWork 2.0 SP2

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, era o que estava mesmo agora a ler lol. Bem obrigado na mesma, vou ter de arranjar outra solução.

Abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, visto que nesta framework nao existe o MidpointRounding, a solução que arranjei foi  somar 0.0001 à variavel que queria arredondar. Por exemplo:

decimal variavel = 0.6050;

totaldoc = variavel + 0.0001; //ficava 0.6051

totaldoctextbox.text = Convert.ToString(Math.Round(variavel,2));

e assim já funciona.

Muito obrigado pela ajuda de todos. Abraço

PS: Podem encerrar o tópico

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora