Bom, estou fazendo uma app que subtitui uma planilha excel para cálculos.Basicamente eu pego dois números num dado período de tempo para calcular dois indicadores e depois pego cada indicador e multiplico por um peso(por exemplo 0.2 e 0.8) para obter o resultado de uma variação em % após subtrair um pelo outro.São 3 métodos:
[code]
public double calcularIndicador(double valorInicial,double valorFinal){
BigDecimal valor1=new BigDecimal(valorInicial);
BigDecimal valor2=new BigDecimal(valorFinal);
BigDecimal resultado=valor1.divide(valor2,6,BigDecimal.ROUND_UP);
return resultado.doubleValue();
}
public double calcularIndicadorComPeso(double valorDeCalcularIndicador,double peso){
BigDecimal valor1=new BigDecimal(valorDeCalcularIndicador);
BigDecimal valor2=new BigDecimal(peso);
BigDecimal resultado=valor1.multiply(valor2);
return resultado.setScale(6,RoundingMode.HALF_UP).doubleValue();
}
public double calcularResultado(double parte1,double parte2){
BigDecimal valor1=new BigDecimal(parte1);
BigDecimal valor2=new BigDecimal(parte2);
BigDecimal resultado=valor1.add(valor2);
double r=resultado.subtract(new BigDecimal(“1”)).setScale(6,RoundingMode.HALF_UP).doubleValue();
return r;
}[/code]
Exemplo de entradas:
double resultado_do_primeiro_indicador=sr.calcularIndicador(360.6400,341.0100);
double resultado_do_segundo_indicador=sr.calcularIndicador(396.9720,345.7240);
Aí eu tenho a sequência:
double parte1indicador=sr.calcularIndicadorComPeso(1.0576,0.2);
double parte2indicador=sr.calcularIndicadorComPeso(1.1483,0.8);
E o final:
double resultado=sr.calcularResultado(parte1indicador,parte2indicador);
O que me dá:0.13016
Mas o correto deveria ser:
0.130106 que depois dará convertido: 13,0106% de variação.
Eu gostaria de saber se alguém sabe o “RANGE” ou o que governa a precisão do Excel para eu fazer o mesmo no java.