Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

dianaemanuel

Casas decimais

Mensagens Recomendadas

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Editado por thoga31

Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.