Duvidas com BigDecimal

Boa tarde Pessoal…

A minha dúvida é o seguinte…
Estou trabalhando com bigdecimal mas estou com problemas de arredondamento.
Tenho o seguinte código

[code]
public class TesteRoundingMode {

public static void main(String[] args) {
	executaRoundingMode();		
}

private static void executaRoundingMode() {
	BigDecimal valor1 = new BigDecimal("8.955");
            BigDecimal valor2 = new BigDecimal(8.955);
            
           //rounding.half_DOWN
	System.out.println("HALF_DOWN: "+valor1.setScale(2,RoundingMode.HALF_DOWN));
	
	System.out.println("HALF_DOWN: "+valor2.setScale(2,RoundingMode.HALF_DOWN));
    }

}[/code]

Ao rodar a aplicação tenho a seguinte saída:
HALF_DOWN: 8.95
HALF_DOWN: 8.96

Porque que é que temos essa diferença de 1 centavo, quando usamos as aspas no número??

agradeço a colaboração.

a diferença não é bem um centavo.
dê um println antes de arredondar e vc verá.
quando entre aspas, a constrção do obj “parseia” a string corretamente 8.955.
do contrario, o método encara com parametro float cujo o tratamento tem “um certo defeito”.
se vc der um println antes de arredondar, verá algo como 8.9549999986915841 e, nesse caso, o HALF_DOWN joga pra 8.95 mesmo.