这个问题以前就遇到过,但是忘记了,刚刚又遇到了,再次记录下。
发现问题的原因:
刚才写个脚本,去校验业务系统和ODS的数据差异,发现差了0.01,而且有好几天的差异,很奇怪,就按照订单导出来到Excel中看,发现数据是一致的,而且ODS是对的。
印象中是数据类型的问题,然后看了下mysql中是float,查了下资料,发现的确是这样。
Mysql中的float和double是非标准数据类型,也就是说数据库中存储的是近似值,不保证准确性,如果是保存钱之类的数据,最好不要使用。
详细介绍可以参考官网:
Floating-Point Types (Approximate Value) - FLOAT, DOUBLE

网上的例子有很多,官网上也有例子,都可以参考下,再分享一篇文章,作者写的挺好:
MySQL如何选择float, double, decimal