String para float?

Olá amigos…meu programa agora está com um erro bobo aqui mas não consigo sacar o problema…
meu código é o seguinte: [code]public void gravaVenda(){
DAOFactory df=DAOFactory.getDAOFactory(DAOFactory.POSTGRES);
DAOVenda dao = df.getDAOVenda();
String dadosVenda[][] = new String[telaVenda.getRows()][telaVenda.getCell()];
dadosVenda = telaVenda.getDadosJTable();
int tam = telaVenda.getRows();
int i = 0;
String guarda = null ;
float preco ;
while (i<tam){
Venda v = new Venda();
String tipo = dadosVenda[i][0];
String descricao = dadosVenda[i][1];
String codigoVenda = txtCodigo.getText();
String totalVenda = txtTotalVenda.getText();
/*Ele está dando erro aqui na hora de a variável preco pegar o totalVenda e tranformar
* para um float… tá dando NumberFormatException :frowning:
* Mas não sei por que??? Eu estava pegando o valor que estava em meu array dadosCompra, onde estava o
* valor da mercadoria sem desconto… ae depois que coloquei o desconto ele funfa legal… calcula tudo no desconto
* só que quando fui mandar ele pegar o preço final da venda que estava em uma txt ele começou a dar esse erro */
preco = Float.parseFloat(totalVenda);
totalVenda = String.valueOf(preco);

		ftxtData = new JFormattedTextField(new Date());
		DateFormatter fmt = (DateFormatter)ftxtData.getFormatter();
		fmt.setFormat(new SimpleDateFormat("dd/MM/yyyy"));
		String data = data =String.valueOf(ftxtData.getValue());
		
		
		String nomeCliente=null;
		DAOFactory df2=DAOFactory.getDAOFactory(DAOFactory.POSTGRES);
		DAOCliente dao2 = df2.getDAOCliente();
		Cliente cliente = new Cliente();
		cliente = TelaTableClientesVenda.getCliente();
		nomeCliente = cliente.getNome();
		
		if (tam>1){
			boolean descontoMarcado = getEstadoDesconto();
			if (descontoMarcado){
				String desc = (String) cmbDesconto.getSelectedItem();
				float desconto = Float.parseFloat(desc);
				desconto = calculaDescontoIndividual(desconto);
				guarda = (String) jTable.getValueAt(i, 3);
				String precoI = guarda;
				float pegaPreco = Float.parseFloat(precoI);
				preco = pegaPreco - desconto;
				totalVenda = String.valueOf(preco);
				DecimalFormat aproximador = new DecimalFormat( " 0.00 " );   
			}
			/*
			 * Ver depois para não deixar mais de duas casas decimais!!!
			 * Tá prontooooooooooo!! 
			 */
			
		}
		
		v.setTipo(tipo);
		v.setDescricao(descricao);
		v.setCodigoVenda(codigoVenda);
		v.setTotalVenda(totalVenda);
		v.setNomeCliente(nomeCliente);
		v.setData(data);
		
		dao.cadastrar(v);
		i++;
	
	}
}[/code]Ajuda ae galeraaaaaaaaaaaaaaa

Em uma pesquisa rápida no Google encontrei o seguinte código, vê se ajuda:String x = "R$ 1.500,00"; NumberFormat nf = NumberFormat.getCurrencyInstance(new Locale( "pt", "BR" )); Float y = new Float( nf.parse( x ).floatValue() );parece exatamente o que você quer, já ajeita o formato do número direitinho inclusive…

Os número que está colocando é algo como “9,99” ou “9.99”?

Dê uma olhada na classe NumberFormat aplicando um Locale “pt”, “BR”. No javadoc dele e de DecimalFormat tem alguns exemplos.

Olá amigos!!!
Testei o código acima amigo mas o erro persiste… agora mudou o nome mas persiste… hehehehe
Mas achu que o erro é o que o amigo Buno Laturner disse…
Ele está pegando o valor no formato 9,90 e não no formato 9.90
AE tá dando problema…
o que os amigos acham que devo fazer??

acho que poderia trocar as virgulas por pontos por exemplo

double a = Double.parseDouble(minhaString.replaceAll(",", "."));

Amigo vc esta tendo problemas de conversão

formatos entre a linguagem e o banco…

procure por formatacao
string para float

e vice versa

tem muita coisa no google

[quote=Thiago veiga]acho que poderia trocar as virgulas por pontos por exemplo

double a = Double.parseDouble(minhaString.replaceAll(",", ".")); [/quote]

Vamos supor que esteja usando uma máscara chamado valorFormatado com o seguinte formato ("#,##0.00")

double a = valorFormatado.parse(suaString).doubleValue();

Não esqueça de colocar essa lógica dentro de um trycatch pegando ParseException

Abraços!!

Talvez nem precise tanto, tenta utilizar em vez do Parse o método Float.Valueof(String s);
deve funcionar.