Como Converter string para Dobrar em Java

Rupam Yadav 12 outubro 2023
  1. Double.parseDouble() Método para converter uma string em um duplo
  2. Double.valueOf() Método para converter uma string para o dobro
  3. DecimalFormat.parse para Converter uma String em um Duplo
  4. Manusear NumberFormatException enquanto converte um valor de string para um valor duplo
Como Converter string para Dobrar em Java

Introduziremos diferentes maneiras de converter a string dada em um duplo em Java com alguns exemplos fáceis de entender.

Double.parseDouble() Método para converter uma string em um duplo

A melhor e mais fácil maneira de lançar uma string para dobrar em Java é utilizando o método estático parseDouble da classe Double.

O Double.parseDouble retorna um tipo primitivo.

public class Main {
  public static void main(String[] args) {
    String stringValue = "12.34";

    double doubleValue = Double.parseDouble(stringValue);
    System.out.println("Converted value: " + doubleValue);
  }
}

Resultado:

Converted value: 12.34

Pode ser um valor negativo ou positivo na string; este método analisará a string para double corretamente.

public class Main {
  public static void main(String[] args) {
    String stringValueNegative = "-12.34";
    String stringValuePositive = "+12.34";
    double doubleValueNegative = Double.parseDouble(stringValueNegative);
    double doubleValuePositive = Double.parseDouble(stringValuePositive);

    System.out.println("Converted negative value: " + doubleValueNegative);
    System.out.println("Converted positive value: " + doubleValuePositive);
  }
}

Resultado:

Converted negative value: -12.34
Converted positive value: 12.34

Double.valueOf() Método para converter uma string para o dobro

Quando precisamos de um objeto Double em vez de um objeto do tipo primitivo duplo, podemos utilizar o método Double.valueOf para obter um valor duplo de objeto de uma string.

public class Main {
  public static void main(String[] args) {
    String stringValueNegative = "-12.08d";
    String stringValuePositive = "+12.3400";

    Double doubleValueNegative = Double.valueOf(stringValueNegative);
    Double doubleValuePositive = Double.valueOf(stringValuePositive);
    System.out.println(doubleValueNegative);
    System.out.println(doubleValuePositive);
  }
}

Resultado:

-12.08
12.34

DecimalFormat.parse para Converter uma String em um Duplo

Se o valor que desejamos é algo como 1,11,111.12d, podemos utilizar a classe DecimalFormat para analisar a string a um doubleValue().

Mas como a classe DecimalFormat pode retornar valores diferentes como int ou byte, é necessário fazer todas as operações no bloco try-catch. E como desejamos um valor duplo, temos que utilizar o método de doubleValue() para obter definitivamente o tipo double.

import java.text.DecimalFormat;
import java.text.ParseException;

public class Main {
  public static void main(String[] args) {
    String stringValue = "1,11,111.12d";

    try {
      double doubleValue = DecimalFormat.getNumberInstance().parse(stringValue).doubleValue();
      System.out.println(doubleValue);

    } catch (ParseException e) {
      e.printStackTrace();
    }
  }
}

Resultado:

111111.12

Manusear NumberFormatException enquanto converte um valor de string para um valor duplo

Às vezes podemos obter NumberFormatException. Isso acontece porque o valor da string não é um valor duplo válido.

Para deixar isso mais claro, veremos um exemplo simples que lança essa exceção.

public class Main {
  public static void main(String[] args) {}
  String stringValue = "1,11";

  double d = Double.parseDouble(stringValue);
  System.out.println(d);
}
}

Resultado:

Exception in thread "main" java.lang.NumberFormatException: For input string: "1,11"
	at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054)
	at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
	at java.base/java.lang.Double.parseDouble(Double.java:543)
	at com.company.Main.main(Main.java:14)

A exceção acontece porque 1,11 não é um valor duplo válido. A solução para este erro é substituir a vírgula por um ponto decimal, como estamos fazendo abaixo.

public class Main {
  public static void main(String[] args) {
    String stringValue = "1,11";

    double d = Double.parseDouble(stringValue.replace(",", "."));
    System.out.println(d);
  }
}

Resultado:

1.11
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Artigo relacionado - Java Double

Artigo relacionado - Java String