Converter -4.440892098500626E-16 para -4.44

Boa tarde
Já tentei diversos métodos para converter esse double que vem do banco de dados e não consegui ainda,
na maioria das tentativas ele converte para 0. Já tentei criando um bigdecimal e usando setScale e ele
retorna 0, já tentei assim e tbm retorna zero:

double x =  ( Math.round( (valorDouble* 100.0) ) ) / 100.0;

Alguma dica ai?

Forçar a transformação pra int não funciona??

ou qualquer outro tipo que satisfaça??

esse numero é uma representação não lembro o nome de um número muito maior

ba cara, já nem sei mais o que pensar hehehehehe
ja tentei de todas as formas que achei na internet e nenhuma consegue :frowning:
truncando pra duas casas já taria bom sabe

também, vc já parou pra ver o número que vc ta arredondando?

Double d = Double.parseDouble("-4.440892098500626E-16");
DecimalFormat df = new DecimalFormat("##0.##################################");
System.out.println(df.format(d));

isso imprime -0,0000000000000004440892098500626.

acho que ao invés de dividir, vc vai ter é que multiplicar por 10 algumas vezes (ou 10 elevado a 16, talvez…kkkk).

Double d = Double.parseDouble("-4.440892098500626E-16"); double dez = Math.pow(10, 16); DecimalFormat df = new DecimalFormat("##0.##"); System.out.println(df.format(d * dez));

hum,
quer dizer que -0,0000000000000004440892098500626 é o -4.440892098500626E-16 ???
Se for tá beleza, então ele estava certo em me retornar 0.

No caso acima você nem sempre vai saber a potência, a não ser que você extraia ela também com um substring.

Mas, segue um outro workaround:

Double valor = -4.440892098500626E-16;
DecimalFormat df = new DecimalFormat("0.##E0");
		
String valorFormatado = df.format(valor);
String valorExtraido = valorFormatado.substring(0, valorFormatado.indexOf("E"));
Double valorDesejado = Double.valueOf(valorExtraido);

Flw

O número está em notação científica.

Significa -4.440892098500626 * 10^-16.

Ao contrário do que o Foxlol disse, dá pra saber exatamente a potência. É -16.

[quote=pablosaraiva]O número está em notação científica.

Significa -4.440892098500626 * 10^-16.

Ao contrário do que o Foxlol disse, dá pra saber exatamente a potência. É -16.[/quote]

Eu não disse que não da pra saber a potência. Eu disse que ele não saberia sem fazer um substring no número.

E que para aplicar o exemplo do amigo mario.fts ele precisaria sempre fazer essa busca para utilizar no Math.pow().

Flw

valeu pessoal, obrigado pela ajuda