Arredondamento de meio em meio usando BigDecimal

1 resposta
Luiz_Gustavo

Galera,

alguém conhece uma maneira prática de se fazer arredondamento de um BigDecimal de 0.5 em 0.5?

Tentei usando as combinações de MathContext, RoundingMode, mas ainda não cheguei onde quero.

Eis o que quero para cada um dos valores abaixo:

3.4 = 3.5
3.3 = 3.5
3.2 = 3.0
5.7 = 6.0
6.9 = 7.0

Eis o que eu consigo com cada uma das combinações de MathContext e RoundingMode:

Assumindo a seguinte operação para cada uma dos valores (onde nota representa o valor):

MathContext mathContext = new MathContext(2, <<RoundingMode>>);
BigDecimal absValue = nota.round(mathContext);
System.out.println(absValue.doubleValue());

RoundingMode.CEILING

3.4
3.3
3.3
5.8
7.0

RoundingMode.DOWN

3.3
3.2
3.2
5.7
6.9

RoundingMode.FLOOR:

3.3
3.2
3.2
5.7
6.9

RoundingMode.HALF_DOWN:

3.4
3.3
3.2
5.7
6.9

RoundingMode.HALF_EVEN:

3.4
3.3
3.2
5.7
6.9

RoundingMode.HALF_UP:

3.4
3.3
3.2
5.7
6.9

RoundingMode.UP:

3.4
3.3
3.3
5.8
7.0

Como podem ver, com nenhuma combinação eu consegui o resultado esperado.

Alguma dica?

Obrigado desde já!

1 Resposta

T

Multiplique o dado por 2, arredonde-o para o inteiro mais próximo, divida-o por 2.

Criado 11 de agosto de 2009
Ultima resposta 11 de ago. de 2009
Respostas 1
Participantes 2