Jump to content
Sign in to follow this  
dianaemanuel

Casas decimais

Recommended Posts

dianaemanuel

Boa tarde,

Na minha aplicação tenho a seguinte conta: -(-101073.76) - 99503.02 - 681.88 e o valor que está a dar em vb é de 888.85999999999069, alguém me consegue explicar o porquê de dar este resultado e não 888.86??

Share this post


Link to post
Share on other sites
dianaemanuel

O resultado final estou a guardar numa variável do tipo double mas também já tentei colocar numa variável do dipo decimal e dá-me exactamente o mesmo valor.

Share this post


Link to post
Share on other sites
nelsonr

Experimenta trabalhar com o tipo decimal em vez do double.

Algo do tipo:

-(DirectCast(-101073.76, decimal)) - DirectCast(99503.02, decimal) - DirectCast(681.88, decimal)

Share this post


Link to post
Share on other sites
dianaemanuel

Ok, já funcionou.

Agora o problema é que em todo o código estou a utilizar sempre variáveis do tipo double, nunca uso decimal, qual é a consequência de alterar tudo para decimal?

Alguns dados estão a ser gravados numa base de dados access onde o tipo de campo é double.

Share this post


Link to post
Share on other sites
thoga31

Se a precisão com muitas casas decimais não é problema, o Double serve bem. Fazes uns Rounds com as casas decimais que precisas (não aconselho mais que 10), e fica tudo a bater certo.

nunca uso decimal, qual é a consequência de alterar tudo para decimal?

Do site que te indiquei ;)

As for what to use when:

  • For values which are "naturally exact decimals" it's good to use decimal. This is usually suitable for any concepts invented by humans: financial values are the most obvious example, but there are others too. Consider the score given to divers or ice skaters, for example.
  • For values which are more artefacts of nature which can't really be measured exactly anyway, float/double are more appropriate. For example, scientific data would usually be represented in this form. Here, the original values won't be "decimally accurate" to start with, so it's not important for the expected results to maintain the "decimal accuracy". Floating binary point types are much faster to work with than decimals.

Precision is the main difference.

Float - 7 digits (32 bit)

Double-15-16 digits (64 bit)

Decimal -28-29 significant digits (128 bit)

Decimals have much higher precision and are usually used within financial applications that require a high degree of accuracy.

Resumidamente: se usares tudo em Decimal, tens muito maior precisão nos cálculos. Mas se a precisão não é mesmo o mais importante, o meu conselho está dado no início do post.

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other sites
dianaemanuel

Muito obrigado, já fiquei esclarecida e sendo assim é melhor começar a usar as variáveis do tipo decimal porque para o caso preciso que os resultados dos cálculos sejam precisos.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • 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.