Home >Backend Development >PHP Tutorial >mysql的float类型很奇怪的,2个值不相等解决方案

mysql的float类型很奇怪的,2个值不相等解决方案

WBOY
WBOYOriginal
2016-06-13 12:21:351601browse

mysql的float类型很奇怪的,2个值不相等
表有很多数据,可有几条很奇怪,字段是float类型,2个值相同

Payment 值=299.7
feiyong 值=299.7

查询语句:feiyong>0 and Payment>0 and Payment
这时还是能查询出来,而且只是有几条有这问题,其他的都正常

------解决思路----------------------
浮点数为表示很大的数,丢失了部分精度
所以在比较时应用: 两个数的差的绝对值小于某个极小数时就视为相等 的策略
或者用 round 取得有效数后在比较
如果你的应用需要有精确的小数位数(比如金融)那么应该使用 DECIMAL 类型
------解决思路----------------------
这个还是蛮正常的  毕竟float数据没有办法保证数据的精度呢
------解决思路----------------------
建议修改类型为DECIMAL
------解决思路----------------------

<br />select ..., (Payment-feiyong) as a<br />form ...<br />...<br />where feiyong>0 and Payment>0<br />having a > 1e-5<br />

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn