Precisão com Divisão na BigDecimal

Pessoal bom dia, estou um dúvida aqui no BigDecimal;
Bem tenho um divisão que está resultado em um valor com 6 casas depois da vírgula, então nesse casos o BigDeciamal laça um exception como vcs devem saber. Então cheguei ao seguinte:

Resultado da divisão = “0,888487”

estou usando algo como

BigDecimal b2 = BigDecimal.ONE.divide(b1 ,  6 , RoundingMode.HALF_EVEN);

So que oq acontence, essa divisão eu sei que da 6 casas decimais, porém no decorrer do sistema não tenho como garantir isso, pois pode ser muito maior essas cassas depois da vírgula, então queria saber como fazer pro bigdecimal pegar tudo que for o meu resultado depois da virgula e sem arredondar nada.

Grato a todos.

Que exception é essa?
A idéia é que ele arrendonde para a escala (usando sua opção de rounding) e não que lance exceptions.

Uma divisão de dois números quaisquer pode resultar em um número com infinitas casas decimais (uma dízima periódica ou número irracional). Dessa forma, você precisa definir a priori qual a precisão necessária e qual o método de arredondamento. Não tem como ter “tudo depois da vírgula sem arredondar nada”, pois isso é impossível.

Exemplo:

Digamos que eu queria dividir os 0.1 por 0.3

BigDecimal x = new BigDecimal("0.1");
		BigDecimal y = new BigDecimal("0.3");
		
		BigDecimal z = x.divide(y);
		System.out.println(z);

O resultado lança a exception:
Exception in thread “main” java.lang.ArithmeticException:

Pelo que eu entendi isso é por que o resultado da divisão não exata, algo como 0,3333333333333333
Para resolver isso eu digo quantas casas decimais quero depois da vírgula e modo de arredondamento.


		BigDecimal z = x.divide(y , 2 , RoundingMode.HALF_EVEN);

Ele me retorna 0.33

Queria uma maneira de que o bigdecimal me retornasse tudo o resultado depois da virgula seja lá ele qual for.

=/

[quote=regis_hideki][quote=ttelsen]

So que oq acontence, essa divisão eu sei que da 6 casas decimais, porém no decorrer do sistema não tenho como garantir isso, pois pode ser muito maior essas cassas depois da vírgula, então queria saber como fazer pro bigdecimal pegar tudo que for o meu resultado depois da virgula e sem arredondar nada.

[/quote]

Uma divisão de dois números quaisquer pode resultar em um número com infinitas casas decimais (uma dízima periódica ou número irracional). Dessa forma, você precisa definir a priori qual a precisão necessária e qual o método de arredondamento. Não tem como ter “tudo depois da vírgula sem arredondar nada”, pois isso é impossível.[/quote]

Suspeitava. Mas tudo bem, é o jeito definir.

Obrigado a todos