九层之台始于垒土

千里之堤溃于蚁穴

记一次菜鸟的惊心动魄(另求原因和说明)

背景:mysql数据库。有个项目需要用到金额类型的数字,计算不多。刚设计时用的是double类型的字段。

第一次出现问题是计算的时候精度错误,例如1.7914.计算出来显示1.79139999999999。

处理方法是:取到数据库的数字后,转为bigdecimal。然后计算。解决问题。

原因是double计算时二进制的问题,包括float。

第二次出现问题是:两个表里的数据  汇总到一个视图后,精度问题又出现了,这次没有计算。直接用的sql查询处理导致这个问题。

求解

 

 

注:项目里很多地方都是用的double,并且计算的地方已经用bigdecimal做了处理。如果把数据库字段改为decaimal会很麻烦。。。。。。。程序代码也要修改

这个视图问题是什么原因?

下次一定慎用double类型

posted on 2019-03-08 16:56  nzxing  阅读(136)  评论(0编辑  收藏  举报

导航