Resultado inesperado

Olá a todos.

Dado o seguinte código:

[code]import java.math.BigDecimal;
public class Teste {
public static void main(String[] args) throws Throwable {
double r = 1.165;
int decimalPlace = 2;

    BigDecimal bd = new BigDecimal(r);   
    bd = bd.setScale(decimalPlace,BigDecimal.ROUND_HALF_UP);
    r = bd.doubleValue();   
    System.out.println(r);
}

}[/code]
A saída é 1.17 (até ai tudo bem é a saída que eu quero)

Mas porque se eu coloco o valor de r= 11.165 a saída será 1,16??? :???:
Eu fiz uns testes e tive os resultados:

r= 1.165 a saída será 1,17 OK
r= 11.165 a saída será 1,16 ???
r= 111.165 a saída será 1,17 OK
r= 1111.165 a saída será 1,16 ???
r= 11111.165 a saída será 1,17 OK

No final vejo, que para um número de casas antes do ponto sendo impar tenho o resultado experado caso contrário não.

Não entendi o porque??? :???:

Att.