Pessoal como posso transformar isto " R$ 1.000,56" em um bigDecimal?
Aguem pode ajudar?
Obrigado
DecimalFormat ajuda
L
8 Respostas
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 + 
Criado 3 de julho de 2009
Ultima resposta 3 de jul. de 2009
Respostas 8
Participantes 3
Alura POO: o que é programação orientada a objetos? Aprenda os conceitos básicos da programação orientada a objetos, como classes, objetos, herança, encapsulamento e polimorfismo, com exemplos.
Casa do Codigo Inteligencia Artificial e ChatGPT: Da revolucao dos... Por Fabricio Carraro — Casa do Codigo