Conversão de String para Flaot

11 respostas
Willdoidao

Não consigo fazer a conversão do que é capturado no campo que usuario digita e transformalo em float e fazer a conta que preciso para jogar no banco. O cógio é esse:

String valor_total, quat_parc,valor_parc_s= null;
        float valor_f,parc_f = 0;
        int quant_i;
        if (valor.getText().trim().equals("")) {
           JOptionPane.showMessageDialog(null, "Campo Valor Obrigatório!");
           valor.requestFocus();
        }
        else{
           //Pegando as variaveis no campo
        valor_total = valor.getText();
        quat_parc   = (String) quant_parc.getSelectedItem();
        
        //Transformando as variaveis para ser jogado no banco

        quant_i = Integer.parseInt(quat_parc);
        valor_f = Float.parseFloat(valor_total);

        if (quant_i > 0) {
            parc_f = valor_f / quant_i;
        } else {
            JOptionPane.showMessageDialog(null, "Não é possivel fazer divisão por zero!!!", "ERRO", JOptionPane.ERROR_MESSAGE);
            quant_parc.requestFocus();
        }
        valor_parc_s = String.valueOf(parc_f);
        valor_parc.setText(valor_parc_s);
    }

11 Respostas

blackfalcon

Isso vai te ajudar:

http://www.guj.com.br/posts/list/30513.java

Abraços

Eduardo_Bregaida

Dá uma olhada my friend http://www.guj.com.br/posts/list/44764.java :smiley:

eduveks

Provavelmente vc esta usando “,” em vez de “.”, o Float.parseFloat só converte strings q tenham “.”, exemplo “1.21” e não “1,21”.

Eduardo_Bregaida

Tem esse tbm http://www.guj.com.br/posts/list/8166.java :smiley:

Sempre dá uma olhada no Busca do GUJ quase sempre tem algo assim :wink:

Eduardo_Bregaida

Aí é fácil, só usar o replaceAll(valor,",",".");

eduveks

Aí é fácil, só usar o replaceAll(valor,",",".");

???! :shock:

valor = valor.replace(’,’,’.’);

… :roll:

Eduardo_Bregaida
eduveks:
Eduardo Bregaida:
eduveks:
Provavelmente vc esta usando "," em vez de ".", o Float.parseFloat só converte strings q tenham ".", exemplo "1.21" e não "1,21".

Aí é fácil, só usar o replaceAll(valor,",",".");

8)

???! :shock:

valor = valor.replace(',','.');

... :roll:

replace não, vai ter q criar um replaceAll

valorIndiceConvertido= Util.replaceAll(valorIndiceConvertido,".","");
public static String replaceAll (String s, String oldString, String newString) {   
	    if (oldString == null || oldString.length() == 0)   
	        return s;   
	       
	    StringBuffer sb = new StringBuffer (s); //-- Retorno   
	    int posS, posS2; //-- Posição em s   
	    int posSb; //-- Posição em sb   
	    int sLength = s.length();   
	    int oldStringLength = oldString.length();   
	    int newStringLength = newString.length();   
	       
	    posS = 0;   
	    posSb = 0;   
	       
	    while (posS >= 0 && posS < sLength) {   
	        posS2 = s.indexOf (oldString, posS);   
	        if (posS2 >= 0) {   
	            posSb += posS2 - posS;   
	            sb.replace (posSb, posSb + oldStringLength, newString);   
	            posS2 += oldStringLength;   
	            posSb += newStringLength;   
	        }   
	        posS = posS2;   
	    }   
	    return sb.toString();   
	}

Assim :D

B
Talvez um
NumberFormat nf = NumberFormat.getInstance(new Locale("pt", "BR"));

double n = nf.parse(string).doubleValue();
Eduardo_Bregaida
Bruno Laturner:
Talvez um
NumberFormat nf = NumberFormat.getInstance(new Locale("pt", "BR"));

double n = nf.parse(string).doubleValue();
Pode usar o
DecimalFormat
:D

EDIT: Será q o Willdoidao anda lendo ou nós estamos enchendo de soluções e ele já achou 1??? :?

B

O JavaDoc da API fala p/ não tentar usar DecimalFormat diretamente pelo construtor, parece que o getInstance (e afins) do NumberFormat já faz todo o trabalho de escolher a implementação.

É no mínimo estranha as implementações que eles dão como exemplo, checar se a classe retornada é uma instância de DecimalFormat, p/ poder usar os métodos específicos, nem parece POO.

eduveks
Eduardo Bregaida:
eduveks:
Eduardo Bregaida:
eduveks:
Provavelmente vc esta usando "," em vez de ".", o Float.parseFloat só converte strings q tenham ".", exemplo "1.21" e não "1,21".

Aí é fácil, só usar o replaceAll(valor,",",".");

8)

???! :shock:

valor = valor.replace(',','.');

... :roll:

replace não, vai ter q criar um replaceAll

valorIndiceConvertido= Util.replaceAll(valorIndiceConvertido,".","");
public static String replaceAll (String s, String oldString, String newString) {   
	    if (oldString == null || oldString.length() == 0)   
	        return s;   
	       
	    StringBuffer sb = new StringBuffer (s); //-- Retorno   
	    int posS, posS2; //-- Posição em s   
	    int posSb; //-- Posição em sb   
	    int sLength = s.length();   
	    int oldStringLength = oldString.length();   
	    int newStringLength = newString.length();   
	       
	    posS = 0;   
	    posSb = 0;   
	       
	    while (posS >= 0 && posS < sLength) {   
	        posS2 = s.indexOf (oldString, posS);   
	        if (posS2 >= 0) {   
	            posSb += posS2 - posS;   
	            sb.replace (posSb, posSb + oldStringLength, newString);   
	            posS2 += oldStringLength;   
	            posSb += newStringLength;   
	        }   
	        posS = posS2;   
	    }   
	    return sb.toString();   
	}

Assim :D

Só uma dúvida... pra q esta tralha toda!? E por q o replace não dá?!... :shock:

Mas claro q usar o NumberFormat ou o DecimalFormat é uma prática melhor... mas esta do replace realmente me intriga pra q tanta complicação!?

Implementar um replaceAll!? Mais arcaico impossível... Por acaso ainda estão usando o java 1.3 !? lol

Criado 24 de junho de 2008
Ultima resposta 26 de jun. de 2008
Respostas 11
Participantes 5