表有很多数据,可有几条很奇怪,字段是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
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号