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

flpmorais

Soma de Doubles

6 mensagens neste tópico

Boas,

já programo à algum tempo, mas não sei porque diabo, nunca tive de lidar com este problema.

Na minha cadeira de IP os gajos deram um exercicio para fazer uma calculadora simples.

Fiz tudo na boa menos uma coisa, quando somo 1.2+2.4 dados como doubles, o resultado é 3.599999999999996

alguem sabe porque é que isto acontece e como posso resolver isto??

eu fiquei mesmo  :thumbdown:

obrigado e abraço

Filipe

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim, mas tipo, a classe math só me arredonda para inteiros...

além disso, não é muito precisa a calculadora que soma 1.2 mais 2.4 e obtém 3.599999... =/

não há  nenhuma maneira de somar 1.2 + 2.4 como doubles e obter o resultado certo?é que isto não me cabe na cabeça como é que 1.2+2.4=3.5999999... :X

abraço

filipe

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso tem a ver com a precisão do formato double, e da impossibilidade de se representarem certos números com exactidão.

Por exemplo, também não consegues escrever 1/3 por extenso no formato decimal, e se fizeres 0.33+0.33+0.33 vais obter 0.99 em vez de 1.

E esse não será certamente o único caso em que irás obter valores estranho. Se somares o 0.1 10 vezes também deves obter 0.99999999999.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esse problema não é da linguagem Java, mas sim da maneira como o computador armazena o número.

Uma maneira de resolveres isso é usares a classe BigDecimal, que já permite decidires como o número é arredondado, a precisão que queres, etc ...

Espero ter ajudado  ;)

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