String para float?

7 respostas
andre_bento
Olá amigos...meu programa agora está com um erro bobo aqui mas não consigo sacar o problema... meu código é o seguinte:
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 :(
                                                 * 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++;
		
		}
	}
Ajuda ae galeraaaaaaaaaaaaaaa

7 Respostas

Ayanami

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…

B

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.

andre_bento

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??

T

acho que poderia trocar as virgulas por pontos por exemplo

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

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

ajfilho

Thiago veiga:
acho que poderia trocar as virgulas por pontos por exemplo

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

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!!

Balena

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

Criado 10 de dezembro de 2008
Ultima resposta 11 de dez. de 2008
Respostas 7
Participantes 7