Jump to content
Slammer

[Dúvida] Math.Round

Recommended Posts

Slammer

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

Share this post


Link to post
Share on other sites
vitortomaz

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

Share this post


Link to post
Share on other sites
Slammer

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

Share this post


Link to post
Share on other sites
Betovsky

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

Já experimentas-te:

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


"Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !"

Sign on a computer system consultant's desk

Share this post


Link to post
Share on other sites
Slammer

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. ;)

Share this post


Link to post
Share on other sites
Betovsky

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

🤔

Estás a usar o .NET 1.1 ?


"Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !"

Sign on a computer system consultant's desk

Share this post


Link to post
Share on other sites
Slammer

🤔

Estás a usar o .NET 1.1 ?

Não, estou a utilizar  .NetCompactFrameWork 2.0 SP2

Share this post


Link to post
Share on other sites
Betovsky

Estás com azar. Isso não há para o .NET CF


"Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !"

Sign on a computer system consultant's desk

Share this post


Link to post
Share on other sites
Slammer

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

Abraço

Share this post


Link to post
Share on other sites
Slammer

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.