Formatar valor?

Olá pessoal.

Procurei aqui no site sobre como formatar valores com 2 casas decimais. Até consegui, utilizando o bigDecimal, mas ele arredonda o valor e eu queria apenas eliminar os valores a partir da 3ª casa.
Tentei utilizar o DecimalFormat, mas não sei o que estou fazendo de errado, pois não elimina:

Exemplo: pmt = 129,50268422

[code]formato = new DecimalFormat(“0.00”);
formato.format(pmt);

System.out.println(pmt.toString());[/code]

sua máscara está definida errada, tente isso:

formato = new DecimalFormat("¤ ###,###,##0.00");   
formato.format(pmt); 

vlww!

Boa tarde… a solução para seu problema é esta:

        int numeroDeCasas = 3;
        BigDecimal pmt= new BigDecimal(129.50268422);
        pmt= pmt.movePointRight(numeroDeCasas);
        pmt= pmt.setScale(0,RoundingMode.DOWN);
        pmt= pmt.movePointLeft(numeroDeCasas);
        System.out.println(pmt.toString());

Desta maneira ele não arredonda :slight_smile:

Seria isso ?

Abraços!

Encontrei uma maneira de formatar um valor double sem arredondar, pq se vc mandar nao arredondar, uma exception é lançada. Então criei um código para formatar sem arredondar o valor. Talvez tenha uma maneira mais prática.

[code]double valor = 129.50968422;
String pattern = “0.00”;
DecimalFormat formato = new DecimalFormat(pattern);
String valorFormatado = Double.toString(valor);
// Aqui pega o numero do index depois de, no maximo, duas casas a partir do ponto.
int index = ((valorFormatado.length()-(valorFormatado.indexOf(".")+1))-2);
index = valorFormatado.length()-(index<0?0:index);

	// Aqui garante que o valor vai ter duas casas decimais. Independente se for zero ou nao.
	valorFormatado =  valorFormatado.substring(0, index);
	valorFormatado = valorFormatado.indexOf(".")== valorFormatado.length()-2?valorFormatado+"0":valorFormatado;		
	
	

    System.out.println(valorFormatado);[/code]

[quote=leo_mf]Encontrei uma maneira de formatar um valor double sem arredondar, pq se vc mandar nao arredondar, uma exception é lançada. Então criei um código para formatar sem arredondar o valor. Talvez tenha uma maneira mais prática.

[code]double valor = 129.50968422;
String pattern = “0.00”;
DecimalFormat formato = new DecimalFormat(pattern);
String valorFormatado = Double.toString(valor);
// Aqui pega o numero do index depois de, no maximo, duas casas a partir do ponto.
int index = ((valorFormatado.length()-(valorFormatado.indexOf(".")+1))-2);
index = valorFormatado.length()-(index<0?0:index);

	// Aqui garante que o valor vai ter duas casas decimais. Independente se for zero ou nao.
	valorFormatado =  valorFormatado.substring(0, index);
	valorFormatado = valorFormatado.indexOf(".")== valorFormatado.length()-2?valorFormatado+"0":valorFormatado;		
	
	

    System.out.println(valorFormatado);[/code][/quote]

Critica construtiva… quando trabalhar com números…use só as funções deles para trabalhar seu valor.

Abraços!