Rumah > pembangunan bahagian belakang > tutorial php > mysql的float类型很奇怪的,2个值不相等解决方案

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

WBOY
Lepaskan: 2016-06-13 12:21:35
asal
1603 orang telah melayarinya

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 />
Salin selepas log masuk

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan