Resultado inesperado

0 respostas
G

Olá a todos.

Dado o seguinte código:

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);
    }
    
}
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.

Criado 13 de junho de 2007
Respostas 0
Participantes 1