Olá
Estou com um problema no meu sistema.
Bom, o problema é o seguinte:
O programa é para uma empresa de materias de construção, a qual solicitou a mudança do sistema para aceitar três casas decimais nos preços dos produtos, mas agora, está ocorrendo um problema:
O método que calcula o valor da venda, é feito com variáveis do tipo double, e o resultado (valorTotal) é um double, mas é retorno deste método é um float. Ou seja, é necessário fazer um casting de double para float, e ai que está o problema, quando este casting é feito, os valores decimáis vem errados.
Ex: a soma dos produtos é 519,860 mas quando o casting é feito retorna 519,844 ou 519,875.
public float getValorTotalItens(){
double valorTotal = 0;
for(int indice=0;indice<=itens.size()-1;indice++){
ItensVendaAndamento itemAtual = (ItensVendaAndamento) itens.get(indice);
valorTotal += Utilitarios.getAproximacao(itemAtual.getPrecoUnitário()*itemAtual.getQuantidade());
}
float valor = Utilitarios.alteraSeparadorDecimal(String.valueOf(valorTotal));
//O alteraSeparadorDeciamal elimina os pontos e substitui a virgula por . ex 1.500,50 fica 1500.50, seu retorno é um float
return valor;
}
Qual seria a solução para esse problema, sendo que substituir o retorno do método para String ou Double é inviável.