DecimalFormat ajuda

8 respostas
L

Pessoal como posso transformar isto " R$ 1.000,56" em um bigDecimal?
Aguem pode ajudar?
Obrigado

8 Respostas

Paezani

Não seria isso:

BigDecimal soma = new BigDecimal("1.000.56");

Atenção: troque as vírgulas por ponto e tire o separador de milhar.
Espero ter ajudado

T

Você pode usar um SimpleDecimalFormat, mas não se esqueça de usar o método setParseBigDecimal

L

Como se usa o Decimal format?
tentei assim e deu o seguinte erro:

String valorString = getParameter("valor"); 
            DecimalFormat dc = new DecimalFormat();
            dc.setParseBigDecimal(true);
            dc.format(valorString);
            BigDecimal valor = new BigDecimal(valorString);
java.lang.IllegalArgumentException: Cannot format given Object as a Number

at java.text.DecimalFormat.format(DecimalFormat.java:487)

at java.text.Format.format(Format.java:140)
T
String valorString = getParameter("valor");   
            DecimalFormat dc = DecimalFormat.getCurrencyInstance();
            dc.setParseBigDecimal(true);  
            BigDecimal valor = (BigDecimal) dc.parse (valorString);

“format” retorna uma String formatada.
“parse” pega uma String e retorna um java.lang.Number (que no seu caso é um java.math.BigDecimal, por isso consegui fazer o cast).

L

Deu o seguinte erro:

java.text.ParseException: Unparseable number: "1.000,00"

Nesta linha
BigDecimal valor = (BigDecimal) dc.parse(valorString);

T

Ah, pensei que você ia passar “R$ 1.000,00”. Se for passar só “1.000,00”, use DecimalFormat.getNumberInstance().

T
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;

class TesteBDFormat {

    public static void main(String[] args) throws java.text.ParseException {
        String s1 = "R$ 1.234.567,89";
        String s2 = "1.234.567,89";
        String s3 = "1234567.89";
        BigDecimal bd;
        DecimalFormat df1 = (DecimalFormat) DecimalFormat.getCurrencyInstance();
        DecimalFormat df2 = (DecimalFormat) DecimalFormat.getNumberInstance();
        df1.setParseBigDecimal (true);
        df2.setParseBigDecimal (true);
        bd = (BigDecimal) df1.parse (s1);
        System.out.println (bd);
        bd = (BigDecimal) df2.parse (s2);
        System.out.println (bd);
        bd = new BigDecimal (s3);
        System.out.println (bd);
    }
}
L

Obrigado thingol,era isso mesmo agora funcionou, brigadão ate + :slight_smile:

Criado 3 de julho de 2009
Ultima resposta 3 de jul. de 2009
Respostas 8
Participantes 3