String para BigDecimal

4 respostas
P

Pessoal recebe de um jText um sequencia de números, por ser uma sequencia muito grande não dá para usar um int.
Tem como eu passar essa String para BigDecimal?
Ou é preciso usar outro recurso para isso?

4 Respostas

zardi

Existe um construtor de BigDecimal que recebe um string como parâmetro.

new BigDecimal("11111111111111111111.222222222") ; // ou uma String qualquer...

e este construtor dispara NumberFormatException caso haja algum problema durante a conversão…

Fique atento para o seguinte:

BigDecimal foo = new BigDecimal("0.1");
BigDecimal bar = new BigDecimal(0.1d);

System.out.println(foo.equals(bar)); // imprime false...

Isso ocorre pois 0.1 não é representado precisamente utilizando double… Sempre que trabalhar com BigDecimal prefira o construtor usando String.

Só uma pergunta, você precisa mesmo utilizar BigDecimal? ou só está tentando ler um “inteiro grande”? se for este o caso existe o BigInteger. Sendo que ambos são imutáveis, ou seja foo.add(“2”) não altera o valor de foo, temos que escrever foo = foo.add(“2”);

P

Valeu.

T

a) Se a tal seqüência não for tão grande assim, use um long.
b) Se na verdade a seqüência tem números e letras, use uma string mesmo. (Por exemplo, um número de RG pode ter o “dígito” verificador “X”, que até onde sei é um número, mas em algarismos romanos.

P

Valeu pelas dicas, mas a sequencia é grande e é composta somente por números.

Criado 15 de agosto de 2006
Ultima resposta 15 de ago. de 2006
Respostas 4
Participantes 3