Double.parseDouble("2.382E-42") imprime 0!!!!  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
juloko666
JavaChild
[Avatar]

Membro desde: 19/07/2005 15:29:36
Mensagens: 127
Offline

Galera, vou logo dando um tapa na cara....

Por que isso Double.parseDouble("2.382E-42"), imprime 0, se o valor deveria ser 89.96????

*para chegar nesse valor fiz: 10^-42*2.38=-89.96


Valeu...

"...devagar é que não se vai longe..." - Bom Conselho (Chico Buarque)
[Email] [MSN]
thundercas
JavaEvangelist
[Avatar]

Membro desde: 15/09/2007 11:04:51
Mensagens: 429
Localização: São Paulo - SP
Offline

Cara, 2.382E-42 = 2.382 * 10 elevado a -42, ou seja ultrapassa o limite suportado por double... Acho q é por isso q ta dando pau... Me corrijam se estiver errado.. abs

This message was edited 1 time. Last update was at 01/12/2009 17:16:49


Cassiano Colombo de Oliveira Gil
Analista Programador Junior
São Paulo - SP
E-mail: cassi_ano@hotmail.com
Twiter: http://twitter.com/thundercas
[Email] [MSN]
pmlm
GUJ Master

Membro desde: 20/04/2009 12:20:07
Mensagens: 1199
Localização: Portugal
Offline

2.38E-42 é 0.00000000000000000000000000000000000000000238

Não sei onde foste buscar esse -89.96
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

juloko666 wrote:
Por que isso Double.parseDouble("2.382E-42"), imprime 0, se o valor deveria ser 89.96????


Como é que você conseguiu isso? Por mágica, não?


No meu caso, imprimiu "2.382E-42".
rmendes08
GUJ Master
[Avatar]

Membro desde: 29/05/2008 14:09:28
Mensagens: 1616
Offline

Erro básico de aritmética, a potência tem precedência sobre o produto, e ele fez o contrário, multiplicou -42 por 2,382 e elevou a 10, quando deveria ter elevado 10 a -42 e aí sim multiplicado por 2,382.

This message was edited 1 time. Last update was at 01/12/2009 17:44:16


"A Técnica é transformada em Arte por quem a emprega"

"O futuro pertence àqueles que acreditam na beleza de seus sonhos"

Computadores Fazem Arte

http://www.uaijug.com.br

"É importante estabelecer uma estrutura de alto nível, mas isso não significa criar uma infinidade de diagramas de classes detalhados."
bestlinux
JavaEvangelist
[Avatar]

Membro desde: 30/06/2008 13:18:23
Mensagens: 359
Offline

Isso é matematica, não é Java não

http://www.bestlinux.com.br
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20578
Localização: Curitiba/PR
Offline

rmendes08 wrote:Erro básico de aritmética, a potência tem precedência sobre o produto, e ele fez o contrário, multiplicou -42 por 2,382 e elevou a 10, quando deveria ter elevado 10 a -42 e aí sim multiplicado por 2,382.


Na verdade, ele simplesmente ignorou o sinal da potência...

E transformou 10^-42*2.38 em 10-42*2.38.

Legal, uma técnica interessante de "se livrar" do problema.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

Esse tipo de confusão (de não entender a notação científica) é muito comum em quem nunca viu uma calculadora científica na vida.

O Windows não ajuda porque o modo padrão da calculadora é o normal (igual a uma calculadora que o dono do boteco tem para saber quanto cobrar pelas suas cervejas e pelas porções de bolinhos de aipim); quando mostro o modo científico da calculadora do Windows, muita gente fica maravilhada. E quando mostro que ela resolve aqueles problemas de conversão em hexadecimal, binário, octal etc., mais ainda.


Nem sabia que o Windows tinha uma calculadora científica!

 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team