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
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?
cristianonasciment
use BigDecimal e seja feliz !!!
L
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.
eliangela
Gente, valeu pela ajuda!
Não sabia que processador tinha dessas frescuras, rsrs
Troquei aqui por BigDecimal.
Obrigada
WellingtonRamos
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.
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.