Conversão de String para Flaot

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:

[code]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);
}[/code]

Isso vai te ajudar:

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

Abraços

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

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

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:

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

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

  1. [/quote]

???! :shock:

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

… :roll:

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

  1. [/quote]

???! :shock:

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

… :roll: [/quote]

replace não, vai ter q criar um replaceAll

valorIndiceConvertido= Util.replaceAll(valorIndiceConvertido,".","");

[code]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();   
}  [/code]

Assim :smiley:

Talvez um

[code]NumberFormat nf = NumberFormat.getInstance(new Locale(“pt”, “BR”));

double n = nf.parse(string).doubleValue();[/code]

[quote=Bruno Laturner]Talvez um

[code]NumberFormat nf = NumberFormat.getInstance(new Locale(“pt”, “BR”));

double n = nf.parse(string).doubleValue();[/code][/quote]

Pode usar o DecimalFormat :smiley:

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

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.

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

  1. [/quote]

???! :shock:

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

… :roll: [/quote]

replace não, vai ter q criar um replaceAll

valorIndiceConvertido= Util.replaceAll(valorIndiceConvertido,".","");

[code]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();   
}  [/code]

Assim :smiley: [/quote]

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