首頁 >後端開發 >php教程 >mysql的float类型很奇怪的,2个值不相等

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

WBOY
WBOY原創
2016-06-23 13:33:001191瀏覽

表有很多数据,可有几条很奇怪,字段是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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn