Double

4 respostas
F

Pessoal,

Percebi que o tipo de dados primitivo double somente aceita os números no seguinte formato: 1000000.00 (um milhão).
Mas eu gostaria de trabalhar com o tipo double no seguinte formato:1.000.000,00 (um milhão usando virgula para casa decimais e ponto para representação de milhar). Existe alguma maneira ??

4 Respostas

Elvis.The.Pelvis

Se você estiver usando dentro do próprio código não. Os números de ponto flutuante (literais) sempre são na forma XXXXXX.XXXXXXXX.

Entretanto, você pode formata-los da maneira que desejar, usando as classes apropriadas (NumberFormat acho).

F

Pessoal,

Alguém tem material ou pede me indicar algum livro que explique a utilizar as classes NumberFormat, NumberFormatter e DecimalFormat ?

Baixei um material direto da Sun mas não consegui entender nada…

Obrigado

Elvis.The.Pelvis

Core Java Volume I
Lá trata DecimalFormat, NumberFormat e PercentFormat (ou algo pra percentagem parecido).

Guilherme_Silveira

NumberFormat eh uma classe tao procurada (se nao mais) quanto a SimpleDateFormat:

java.text.NumberFormat

para usar o padrao do sistema voce pode usar os seguintes metodos:

// para inteiro
String integer = java.text.NumberFormat.getIntegerInstance().format(valorvemaqui)

// para porcentagem
String percent = java.text.NumberFormat.getPercentInstance().format(valorvemaqui)

entre outros....

para formatar um numero use o seguinte codigo

double numero = 15.4739;
java.text.NumberFormat nf = java.text.NumberFormat.getInstance();
String formatado = nf.format(numero);

entre a segunda e a terceira linha voce pode configurar o formatador!

void setMaximumFractionDigits(int newValue) Sets the maximum number of digits allowed in the fraction portion of a number.

void setMaximumIntegerDigits(int newValue)
Sets the maximum number of digits allowed in the integer portion of a number.

void setMinimumFractionDigits(int newValue)
Sets the minimum number of digits allowed in the fraction portion of a number.

void setMinimumIntegerDigits(int newValue)
Sets the minimum number of digits allowed in the integer portion of a number.

Esses quatro metodos setam os parametros de numeros antes e depois do ponto decimal.

E para setar o agrupador:

public void setGroupingUsed(boolean newValue)
Set whether or not grouping will be used in this format.

Esse seta a virgula a cada tres casas decimais.

No seu exemplo voce citou um numero formatado de um jeito mas descreveu outro (virgulas e pontos e nao pontos e virgulas).

O agrupador soh pode ser configurado atraves de um Locale (configuracao regional).... entao tente na hora de criar o formatador utilizar o seguinte metodo:

NumberFormat nf = NumberFormat.getInstance(Locale.ENGLISH);

Esse codigo cria um formatador padrao ingles que eh com virgulas como separador de 3 digitos e ponto decimal.

espero ter ajudado...

Guilherme Silveira

Criado 21 de janeiro de 2003
Ultima resposta 28 de jan. de 2003
Respostas 4
Participantes 3