Float maledeto

5 respostas
fr3akoutTotal

Pessoal, boa tarde!

Tenho uma dúvida a qual procurei por gerações e ainda não encontrei.

Preciso parsear um número(em String) neste formato: $1,256.23 para float, teria que ficar algo como 1.256.23, sei lá!

Com BigDecimal não rola.
Com double não rola.
Com float muito menos…

se eu der replace de virgula pra ponto, da exception de multiple points.

o q fazer pessoal???

valeu!

5 Respostas

P

java.text.DecimalFormat

fr3akoutTotal

package testes;

import java.text.DecimalFormat;

import java.text.NumberFormat;

import java.text.ParseException;
public class RascunhoDois {

public static void main(String Args[]) throws ParseException {

NumberFormat f = NumberFormat.getInstance();

DecimalFormat df = new DecimalFormat();
System.out.println(df.parse("1,256,352.32"));
}

}

Saida: 1.256

pq isso?

T

Repetindo pela n-ésima vez. Se seu número estiver em formato brasileiro ("$1.234.567,89") então o código abaixo é o que funciona.
Se estiver em formato americano ("$1,234,567.89"), então troque no código abaixo “Locale brasil = new Locale (“pt”, “BR”)” por

“Locale us = Locale.US” e os outros lugares onde escrevi “brasil”.

import java.text.*;
import java.util.*;

class TesteMoeda {
    public static void main(String[] args) {
        String s1 = "2.685,20";
        String s2 = "1.130,50";
        Locale brasil = new Locale ("pt", "BR");
        NumberFormat nf = new DecimalFormat ("#,##0.00", new DecimalFormatSymbols (brasil));
        try {
            double d1 = nf.parse (s1).doubleValue();
            double d2 = nf.parse (s2).doubleValue();
            double soma = d1 + d2;
            String s3 = nf.format (soma);
            System.out.println (s3);
        } catch (ParseException ex) {
            ex.printStackTrace();
        }
    }
}
fr3akoutTotal

thingol:
Repetindo pela n-ésima vez. Se seu número estiver em formato brasileiro ("$1.234.567,89") então o código abaixo é o que funciona.
Se estiver em formato americano ("$1,234,567.89"), então troque no código abaixo “Locale brasil = new Locale (“pt”, “BR”)” por

“Locale us = Locale.US” e os outros lugares onde escrevi “brasil”.

import java.text.*;
import java.util.*;

class TesteMoeda {
    public static void main(String[] args) {
        String s1 = "2.685,20";
        String s2 = "1.130,50";
        Locale brasil = new Locale ("pt", "BR");
        NumberFormat nf = new DecimalFormat ("#,##0.00", new DecimalFormatSymbols (brasil));
        try {
            double d1 = nf.parse (s1).doubleValue();
            double d2 = nf.parse (s2).doubleValue();
            double soma = d1 + d2;
            String s3 = nf.format (soma);
            System.out.println (s3);
        } catch (ParseException ex) {
            ex.printStackTrace();
        }
    }
}

Valeu pela resposta, só me diga uma coisa, precisa dessa arrogância? Não costumava frequentar aqui por causa dessas coisas, voltei e vi que ainda não mudou nada…

Se você algum dia precisar de explicação em algo, mesmo que seja a n-ésima vez, eu repito sem arrogância, sem problema algum!

Grato mais uma vez.

Abraços.

fr3akoutTotal

thingol:
Repetindo pela n-ésima vez. Se seu número estiver em formato brasileiro ("$1.234.567,89") então o código abaixo é o que funciona.
Se estiver em formato americano ("$1,234,567.89"), então troque no código abaixo “Locale brasil = new Locale (“pt”, “BR”)” por

“Locale us = Locale.US” e os outros lugares onde escrevi “brasil”.

import java.text.*;
import java.util.*;

class TesteMoeda {
    public static void main(String[] args) {
        String s1 = "2.685,20";
        String s2 = "1.130,50";
        Locale brasil = new Locale ("pt", "BR");
        NumberFormat nf = new DecimalFormat ("#,##0.00", new DecimalFormatSymbols (brasil));
        try {
            double d1 = nf.parse (s1).doubleValue();
            double d2 = nf.parse (s2).doubleValue();
            double soma = d1 + d2;
            String s3 = nf.format (soma);
            System.out.println (s3);
        } catch (ParseException ex) {
            ex.printStackTrace();
        }
    }
}

Opa! beleza! mudei aqui e funfou, valeu denovo!

Criado 19 de setembro de 2008
Ultima resposta 19 de set. de 2008
Respostas 5
Participantes 3