Double.parseDouble("2.382E-42") imprime 0!

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^-422.38=-89.96

Valeu…

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

2.38E-42 é 0.00000000000000000000000000000000000000000238

Não sei onde foste buscar esse -89.96

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

class TesteDouble {
    public static void main (String[] args) {
        // Imprime: "2.382E-42"
        System.out.println (Double.parseDouble ("2.382E-42"));
    }
}

No meu caso, imprimiu “2.382E-42”.

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.

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

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

E transformou 10^-422.38 em 10-422.38.

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

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.