Erro converter String para Double

7 respostas Resolvido
java
A

No meu código estou lendo uma frase e guardando na minha variável string os valores 55,88,
preciso converter os valores que estão na string para double, só que esta dando erro conforme escrevi abaixo,

Alguém consegue me ajudar ?

String frase = Bla bla bla bla bla Valor 55,88 bla bla bla bla bla;

Pattern pattern = Pattern.compile(Valor (\d+\W\d+));

Matcher matcher = pattern.matcher(frase);

if (matcher.find()) {

String valor = matcher.group(1);

double valorBruto = Double.valueOf(valor);
System.out.printf("Achei o valor bruto: " + valorBruto);
		    } else {
		 	    System.out.println("Nao achei o valor bruto"); 
		    }
Exception in thread main java.lang.NumberFormatException: For input string: 55,88at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)

at sun.misc.FloatingDecimal.parseDouble(Unknown Source)

at java.lang.Double.parseDouble(Unknown Source)

at java.lang.Double.valueOf(Unknown Source)

at program.Programa.main(Programa.java:33)

7 Respostas

B

da um replace de virgula para ponto no valor “55,88”

A

eu fiz isso e deu certo, mais fiquei em duvida o porque ele não aceita o valor com virgula e só com ponto, vc tem alguma ideia o pq?

B

bom daí eu já num sei…isso pega a parte teórica…mais tem um pessoal fera aqui no GUJ logo alguém te responde essa facinho…blza

A

Ok vou aguardar alguém descobrir o motivo, valew…

staroski

Porque os tipos double e float usam o ponto como separador decimal e não a vírgula.

A

entendi, então qual seria a solução para fazer essa conversão?

staroski
Solucao aceita

Ué, troca a vírgula por ponto, como o @blayd2015 já sugeriu.

Dúvida, por que você está usando o método valueOf?
O valueOf retorna um objeto Double, mas sua variável é do tipo primitivo double.

Faça assim:

String valor = matcher.group(1);
valor = valor.replace(',', '.');
double valorBruto = Double.parseDouble(valor);
Criado 27 de fevereiro de 2020
Ultima resposta 27 de fev. de 2020
Respostas 7
Participantes 3