Estou fazendo uma aplicação Android que busca uma lista de produtos que estão no “carrinho de compras” e soma o valor total dos itens. O problema é que a soma final está dando errada, assim: 21.7 + 2.9 = 24.59999999999999998
É muito estranho, porque eu percorro a lista de item em item, e os itens são somados corretamente mas, quando chega num item específico, ele soma errado.
Eu já debuguei o código e o valor do item está correto (2.9).
Estou fazendo uma aplicação Android que busca uma lista de produtos que estão no “carrinho de compras” e soma o valor total dos itens. O problema é que a soma final está dando errada, assim: 21.7 + 2.9 = 24.59999999999999998
É muito estranho, porque eu percorro a lista de item em item, e os itens são somados corretamente mas, quando chega num item específico, ele soma errado.
Eu já debuguei o código e o valor do item está correto (2.9).
Eu não quero resolver isso com uma POG, arredondando os valores, quero saber o que pode estar errado no meu código.
Obrigada[/quote]
em java temos esse problema por usarmos floats ou double com números quebrados (assim como em qualquer outra linguagem que segue um padrão la que não lembro o nome.) mas resolvemos isso usando BigDecimal para fazer os calculos… na api do android não teria um BigDecimal para você usar?
[quote=Longino]Jamais use double ou float para cálculos financeiros. Sempre use BigDecimal.
Isso é em qualquer linguagem. Floats e doubles são para cálculos matemáticos, decimal para financeiro.[/quote]E mesmo assim, para esses itens, deve-se ter em mente que há imprecisão matemática e a mesma deverá permanecer constantemente sob intenso controle.