Tipo numeric(15,2) do firebird guardando mais de 2 casas decimais!

Bom dia, estou com um problema usando banco de dados firebird, quando eu tento gravar um valor BigDecimal do java numa coluna do tipo numeric(15,2), mesmo setando a precisão do BigDecimal pra 2, de um valor por ex.: 245.67, quando vou ver no banco o valor fica armazenado como 245.6699999234934435897.

O problema não é so com BigDecimal, acontece tambem com Double ou mesmo passando o valor direto na String do SQL.

Porque acontece isso? Existe alguma solução? Devo usar outro tipo de dado pra guardar o valor?

245.6699999234934435897 é basicamente 245.67, mas por algum motivo você usou algum float no meio :frowning:
O tipo de dados é esse mesmo. Em algum ponto do seu código houve conversão para float?

a questão é que não pode ser basicamente, deve ser exato. E como o problema ocorre mesmo passando o valor 245.67 via string pelo sql nao deve ser problema no java e sim no banco…
Só queria entender o porque.