Eu estou fazendo uma operação onde valor desejado = 1
e pValorObtido = 0.9999999999991193
E o resultado que estou tendo na operação:
diferencaDesejadosObtidos = diferencaDesejadosObtidos.subtract(valorObtido).setScale(MLP2.PRECISAO_VALORES,RoundingMode.HALF_UP);
8.8073993E-13
O método por completo.
Ja fiz usando setScale nos dois bigdecimal, só que não resolve.
Alguem ja teve algum problema parecido?
private double calculaErro(double valorDesejado, double pValorObtido){
BigDecimal diferencaDesejadosObtidos = new BigDecimal(valorDesejado);
BigDecimal valorObtido = new BigDecimal(pValorObtido);
diferencaDesejadosObtidos = diferencaDesejadosObtidos.subtract(valorObtido).setScale(MLP2.PRECISAO_VALORES,RoundingMode.HALF_UP);
//quadradoValorObtido = valorObtido ^ 2
BigDecimal quadradoValorObtido = new BigDecimal(pValorObtido).pow(2).setScale(MLP2.PRECISAO_VALORES,RoundingMode.HALF_UP);
//valor = 1- valorObtido ^ 2
BigDecimal valor = new BigDecimal(1).setScale(MLP2.PRECISAO_VALORES,RoundingMode.HALF_UP);
valor = valor.subtract(quadradoValorObtido);
valor = valor.setScale(MLP2.PRECISAO_VALORES,RoundingMode.HALF_UP);
//diferencaDesejadosObtidos * valor
BigDecimal erro = diferencaDesejadosObtidos.multiply(valor).setScale(MLP2.PRECISAO_VALORES,RoundingMode.HALF_UP);
return erro.doubleValue();
}