flpmorais Posted October 18, 2009 at 02:56 PM Report Share #292195 Posted October 18, 2009 at 02:56 PM 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 ? obrigado e abraço Filipe Link to comment Share on other sites More sharing options...
bruno1234 Posted October 18, 2009 at 03:40 PM Report Share #292205 Posted October 18, 2009 at 03:40 PM Podes sempre arredondar o valor. Através da classe Math. Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos Link to comment Share on other sites More sharing options...
flpmorais Posted October 18, 2009 at 11:33 PM Author Report Share #292263 Posted October 18, 2009 at 11:33 PM 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 Link to comment Share on other sites More sharing options...
Rui Carlos Posted October 21, 2009 at 03:16 PM Report Share #292719 Posted October 21, 2009 at 03:16 PM 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. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
Salem Posted October 22, 2009 at 02:30 PM Report Share #292905 Posted October 22, 2009 at 02:30 PM 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 😉 Link to comment Share on other sites More sharing options...
flpmorais Posted October 26, 2009 at 05:10 PM Author Report Share #293422 Posted October 26, 2009 at 05:10 PM obrigadão!!! ja percebi agora =) Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now