数据库查询字段类型为double类型和float类型时遇到的坑

对于小数型的字段,我们常用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类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值