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…
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.