Ajuda campo Double

Pessoal fui fazer um código aqui usando casa decimal e não funciona.
tipo:

String n1 = “1,99”;
String n2 = “1.000,01”;
double v;
v = Double.parseDouble(n1) + Double.parseDouble(n2); //1002
System.out.println(String.valueOf(v));

Exception in thread “AWT-EventQueue-0” java.lang.NumberFormatException: For input string: “1,99”
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)

ALGUÉM SABE O PORQUE NÃO FUNCIONA?

Os parsers de string para número não utilizam o locale, é fixo, sempre o “.” é separador decimal e a “,” é agrupador de dígitos. Tente “1.99” ou “1,000.10” para ver o resultado.

Não sei se estou errado, mas você está usando String para o formato de seus “números com casas decimais”, talvez uma conversão para o tipo correto ajudaria.

[Edit] É agora que vi o parse, provavelmente deve ser o uso errado dos sinais de separação, como disse o amigo acima

Porque como é sabido por todos, variáveis do tipo ponto flutuante tem as casas decimais separadas por vírgulas e não ponto

Dê uma olhada nesse tópico para resolver o teu problema

http://www.guj.com.br/posts/list/99440.java#535804

Você está usando separadores para os milhares…

O correto seria:

String n1 = "1.99"; String n2 = "1000.01"; double v; v = Double.parseDouble(n1) + Double.parseDouble(n2); //1002 System.out.println(String.valueOf(v));

v = Double.parseDouble(n1) + Double.parseDouble(n2); //1002 System.out.println(String.valueOf(v));

Pq vc passa pra Double e depois vc ainda imprime o valor da String?

Se é que “String.valueOf()” faz isso…não conheço essa função, mas conheço inglês…

Tente apenas System.out.println(v);

=)

nO BRASIL UTILIZAMOS VALORES ASSIM 1.000,99 OU SEJA USAMOS O “.” PARA SEPARAR O MILHAR E A “,” PARA SEPARAR O DECIMAL.

COMO POSSO TRABALHAR DESSA FORMA?

eros.stein
CONCORDO COM O QUE VC DISSE MAS COMO DISSE, O “.” SEPARA MILHAR E A “,” SEPARA CENTAVOS.

Use o String.replace antes da conversao, convertendo “.” para “” e “,” para “.”

Obrigado REsolvido!

private String tiraVirgula(String numero) {
try {
numero = numero.replace(".", “”).replace(",", “.”);
} catch (Exception exception) {
}
return numero;
}

NumberFormat nf = NumberFormat.getInstance(new Locale("pt","BR"));
		nf.setMinimumFractionDigits(2);
		String n1 = "1,99";
		String n2 = "1.000,01";
		double v;
		try {
			v = nf.parse(n1).doubleValue() + nf.parse(n2).doubleValue();
			System.out.println(nf.format(v));
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

Assim vc pode usar os numeros do Brasil a vontade =P

[]'s

Buenas povo,

Usa um formatter pra trabalhar com os números. Acredito q vc esteja trabalhando com dinheiro, então…

[code]NumberFormat dinheiro = new DecimalFormat("#,###,##0.00", DecimalFormatSymbols.getInstance(new Locale(“pt”,“br”)));

//daí vc faz:

dinheiro.format(double); // para formatar o double em String
dinheiro.parse(String); // para transformar a String em double[/code]