对于小数型的字段,我们常用double类型和float类型,但是这两种类型使用的时候有很大差别,下面我们来看一下
在设计数据表时,突然发现原来FLOAT原来是很不靠谱的,所以在这里建议大家换成DOUBLE类型,
原因是:
在数据库中的所有计算都是使用双精度完成的,使用float(单精度)会有误差,出现意想不到的结果。
在我们查询数据时,查询字段sumper值为5.54,sql语句:select * from app_mobile_device lo where lo.sumper= ‘5.54’;
但是结果却显示没有查到数据,实际是数据库中有sumper值为5.54的,这就是float类型造成的精度丢失的问题。一旦精度丢失了
float(5.54) = 5.54 这个是不等的。这样,本来我们应该能查到的数据就会莫名其妙的消失。
所以我们在设计数据库字段类型是小数类型时我们都用double类型,在数据库中也就是decimal类型。
当我们把字段的类型修改为decimal,我们再使用select * from app_mobile_device lo where lo.sumper= ‘5.54’;
结果我们就查出来了sumper为5.54的数据。所以我们在设计数据库使用小数字段类型千万不要选用float类型。