Pegar somente as 2 casas depois da virgula com BigDecimal?

Opa :smiley:

Alguém sabe como que eu posso pegar somente as 2 casas depois da virgula com BigDecimal?

[]'s

Utilize os métodos set/get MaxFractionDigits da classe java.text.NumberFormat. :slight_smile:
http://java.sun.com/j2se/1.5.0/docs/api/java/text/NumberFormat.html

Abraço.

Ou:

import java.math.BigDecimal;

public class ABC {

	public static void main(String[] args) {
		BigDecimal a = new BigDecimal("11.22945475");
		System.out.println(a);
		BigDecimal aArredondado = a.divide(BigDecimal.ONE, 2, BigDecimal.ROUND_HALF_UP);
		System.out.println(aArredondado);
	}	
	
}

Arredonde usando o próprio BigDecimal. Para arredondar, você divide pela constante UM e manda colocar 2 casas de precisão.

Essa é só outra maneira de fazer, mas talvez pelo NumberFormat seja mais fácil.

não tem como não arredendo e pegar só as 2 posições?

eu nao posso usar java 5 e nem arredondar haueha

Multiplique seu BigDecimal por 100, ache a parte inteira, e ache o resto da divisão por 100.

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

class TesteBigDecimal2 {
    public static void main(String[] args) {
        BigDecimal bd = new BigDecimal ("123.4567");
        int digits = bd.movePointRight (2).toBigInteger().mod (new BigInteger("100")).intValue();
        System.out.println (digits); // isto deve dar 45
        
    }
}

Por favor, teste com Java 1.4 porque eu não tenho aqui Java 1.4.