Estou usando em um sistema um arredondamento de valores com BigDecimal. Sei que se eu usar:
double pulso = 19.0;
int normal = 3200;
BigDecimal bdPulso = new BigDecimal(pulso);
BigDecimal bdConstante = new BigDecimal(0.308);
BigDecimal bdFator = new BigDecimal(nominal / 800);
bdPulso = bdPulso.multiply(bdConstante);
BigDecimal ml_corante = bdFator.multiply(bdPulso);
O Valor de ml_corante será 23.407999999999999696242980462557170540094375610351562500, certo? Eu quero apenas três casas decimais depois da virgula, logo:
System.out.println(ml_corante.setScale(3,RoundingMode.HALF_EVEN));
//imprime 23.408
O problema é que o valor a ser obtido deve ser igual a 23.410, sendo assim devo arredondar as duas ultimas casas decimais. Minha pergunta e como fazer isso sem ter que analisar separadamente os ultimos caracteres, pois em um método com mais de 200000 registros o sistema vai “penar” um pouco kkkkkk.
Alguma ideia?