[RESOLVIDO] Exibição de valores grandes

Olá Pessoal, eu estou com uma dúvida/dificuldade em algo que deve ser muito simples mas não sei nem como procurar isso no google, então venho pedir ajuda a vocês.

Tenho um valor double por exemplo 888888888888,124574124. Este valor estou formatando para que fique da seguinte forma: 888.888.888.888,12 - no entanto, eu armazeno este valor em String. Este valor eu desejo exibir na tabela, mas quando exibo, ele é representado automaticamente em forma de expoente. Eu mando exibir a saída da String no console e aparece todo o numero e no final E11.

Como faço pra exibir o todo o número?

se vc continuar utilizando string não irá conseguir… a não ser que você formate antes de passar pra string…

utilize NumberFormat ou DecimalFormat e também a pesquisa pq isso tem a RODO aqui no GUJ…

[quote=paulovloghan]se vc continuar utilizando string não irá conseguir… a não ser que você formate antes de passar pra string…

utilize NumberFormat ou DecimalFormat e também a pesquisa pq isso tem a RODO aqui no GUJ…[/quote]

Estou formatando o double pelo DecimalFormat e inserindo na String.
Poderia postar um link da pesquisa a qual você realizou ?

[quote=max.analista][quote=paulovloghan]se vc continuar utilizando string não irá conseguir… a não ser que você formate antes de passar pra string…

utilize NumberFormat ou DecimalFormat e também a pesquisa pq isso tem a RODO aqui no GUJ…[/quote]

Estou formatando o double pelo DecimalFormat e inserindo na String.
Poderia postar um link da pesquisa a qual você realizou ?[/quote]

Até aonde eu sei, para números decimais muito grande você precisa usar a classe BigDecimal.

BigDecimal não ajuda?

opa… claro que sim… veja como é fácil: CLIQUE AQUI

Vi alguns casos na busca, no entanto, eu busco valores do banco de dados e estes valores podem vir com 1 casa, 10 casas, 15 casas. É possível fazer um tratamento padrão para todos?

Eu não entendi muito bem a sintaxe #,##.0,00 do exemplo abaixo:

DecimalFormat df = new DecimalFormat("#,##0.00", new DecimalFormatSymbols(LOCAL)); String s = df.format(value / 100.0); System.out.println(s);

Alguem poderia me explicar? Como ficaria para meu caso visto que eu preciso de uma mascara que fique da seguinte forma:

Numero: 123456789.251536
Numero tratado: 123.456.789,25

Numero: 15896.6589
Numero tratado: 15.896,66

Usar %f sem especificaçao de número de casas decimais depois da vírgula imprime exatamente 6 casas depois da vírgula.
Dê uma olhada no exemplo abaixo.

import java.util.*;


class TestePrintf {
    public static void main (String[] args) {
// Note que um double tem precisao de apenas 15 casas decimais
        double d = 888888888888.124574124; 
        String s = String.format ("O valor de 888888888888.124574124 eh %f", d);
	System.out.println (s); 
// Vai imprimir:
// O valor de 888888888888.124574124 eh 888888888888.124600
    }
}

Isso não ajuda?

double mydouble = 88888888888888.124574124;
DecimalFormat myFormatter = new DecimalFormat("###,###.##");
String output = myFormatter.format(mydouble);
System.out.println(output); // saída será 888.888.888.888,12 

[quote=asousaj]

Isso não ajuda?

double mydouble = 88888888888888.124574124; DecimalFormat myFormatter = new DecimalFormat("###,###.##"); String output = myFormatter.format(mydouble); System.out.println(output); // saída será 888.888.888.888,12 [/quote]

Essa solução será bem útil.
Optei por trabalhar com BigDecimal. Mas sua solução é totalmente viável ao meu contexto. Obrigado.

Obrigado aos demais que expressaram opiniões válidas ao conhecimento em geral.

Vlw galera.

Para facilitar ainda mais, eu utilizei a formatação na View.

<f:convertNumber pattern="###,###.##" minFractionDigits="2" maxFractionDigits="2"/>

Funcionou perfeitamente e até mais rápido para a quantidade de registros que os relatórios aqui retornam. :smiley: