Eu leio o dado do banco de dados (postgresql) onde está armazenado numa coluna como “real”. (uso hibernate)
Eu mostro o dado sem nenhum cálculo ou tratamento na minha view.
Normalmente o valor aparece de forma correta, porém as vezes o valor vem diferente:
Por exemplo:
para 5.111 -> 5.1110001
para 1.111 -> 1.110999
para 0.99 -> 0.99000001
para 0.8 -> 0.80000001
para 0.7 -> 0.69999999
para 0.3 -> 0.30000001
para 0.2 -> 0.2 (vem certo)
para 0.15 -> 0.15000001
para 0.1 -> 0.1 (vem certo)
Uso o VRaptor, por isso coloquei nesse forum. Se for necessário posto em outro.
Na verdade sua dúvida é de pgsql X money, e isso deveria ser tratado em outro subfórum mesmo. Mas vamos lá…
Como você está construindo seu BigDecimal? O correto é construir ele a partir de uma String, pois se você usar o contrutor com double/float você perde a precisão. Eu tenho usado BigDecimal com pgsql e tudo funciona bem, para qualquer valor.
Esse erro acontece ao ler do banco ou quando vocẽ persiste? Você está usando os converters localizados do Vraptor?