Olá Pessoal,
eu estou com uma dúvida aqui
não estou conseguindo resolver
e toda hora aparece a Exception
NumberFormatException:
Exception in thread "main" java.lang.NumberFormatException: For input string: "10,00"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)
at java.lang.Double.valueOf(Double.java:475)
at java.lang.Double.<init>(Double.java:567)
at model.analises.AcidezVolatil.calculaAcidezVolatil(AcidezVolatil.java:251)
at model.analises.AcidezVolatil.main(AcidezVolatil.java:295)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 14 segundos)
Jóia ctosin?
Obrigado pela ajuda,
Mas o problema é que
eu não sei aonde está
ocorrendo essa conversão
do ponto para vírgula.
Se vc ou alguém puder me dar
uma ajuda?
Use a classe NumberFormat. Se você usar o pt_BR como Locale, ele vai usar virgula como separador da parte fracionaria… Você pode achar varios tutoriais por aí pra isso!
Olá pessoal,
descobri daonde está vindo essa vírgula
vem de algo parecido como esse do meu teste:
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("0.00");
double valor = 1.23569;
String valorString = df.format(valor);
System.out.println("Valor String = " + valorString);
}
Alguém sabe me dizer porque eu não consigo imprimir
essa String sem lançar a exception:
Exception in thread "main" java.lang.NumberFormatException: For input string: "1,24"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)
at java.lang.Double.valueOf(Double.java:475)
at java.lang.Double.<init>(Double.java:567)
at meustestes.Main.main(Main.java:27)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)
Como você não especificou um Locale, o Java está usando o padrão (que pra você é o pt_BR). Por isso que a formatação separa as casas decimais com “,” e não com “.”. Usar o pattern “0.00” não significa que o “.” vai ser usado: isso depende do Locale.
Existem diversas formas de resolver isso. Uma delas é esta:
public class Test {
public static void main(String[] args) {
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator('.');
DecimalFormat df = new DecimalFormat("0.00", dfs);
double valor = 1.23569;
String valorString = df.format(valor);
System.out.println("Valor String = " + valorString);
}
}