问题描述
最近遇到了一个bug。用的是pg数据库。表里有一个index_value字段,表示指标的数值,是float8类型。表里存的是-0.11105,但是查出来变成了-0.111049999999。而且这个是不稳定的,有时候查出来又是-0.11105。
排查的过程中,我先在数据库里执行sql,查出来是正常的-0.11105。
但是在业务代码中,用mybatis查出来就有问题了(mybatis查出来封装的对象用的是BigDecimal类型)。
解决办法
将float8改成numeric类型。需要存精度比较高的字段时,用NUMERIC/DECIMAL。