您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

mysql的float类型很奇怪的,2个值不相等

2025/7/5 21:31:01发布20次查看
表有很多数据,可有几条很奇怪,字段是float类型,2个值相同
payment 值=299.7
feiyong 值=299.7
查询语句:feiyong>0 and payment>0 and payment
这时还是能查询出来,而且只是有几条有这问题,其他的都正常
回复讨论(解决方案) 浮点数为表示很大的数,丢失了部分精度
所以在比较时应用: 两个数的差的绝对值小于某个极小数时就视为相等 的策略
或者用 round 取得有效数后在比较
如果你的应用需要有精确的小数位数(比如金融)那么应该使用 decimal 类型
这个还是蛮正常的  毕竟float数据没有办法保证数据的精度呢
浮点数为表示很大的数,丢失了部分精度
所以在比较时应用: 两个数的差的绝对值小于某个极小数时就视为相等 的策略
或者用 round 取得有效数后在比较
如果你的应用需要有精确的小数位数(比如金融)那么应该使用 decimal 类型
那现在查询语句要怎么改才能正常查询,谢谢 建议修改类型为decimal
select ..., abs(payment-feiyong) as aform ......where feiyong>0 and payment>0having a > 1e-5
select ..., (payment-feiyong) as aform ......where feiyong>0 and payment>0having a > 1e-5
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product