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

goimt 2015-06-10 06:22:40
表有很多数据,可有几条很奇怪,字段是float类型,2个值相同

Payment 值=299.7
feiyong 值=299.7

查询语句:feiyong>0 and Payment>0 and Payment<feiyong

这时还是能查询出来,而且只是有几条有这问题,其他的都正常
...全文
273 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Suckor 2015-06-10
  • 打赏
  • 举报
回复

select ..., (Payment-feiyong) as a
form ...
...
where feiyong>0 and Payment>0
having a > 1e-5
Suckor 2015-06-10
  • 打赏
  • 举报
回复

select ..., abs(Payment-feiyong) as a
form ...
...
where feiyong>0 and Payment>0
having a > 1e-5
傲雪星枫 2015-06-10
  • 打赏
  • 举报
回复
建议修改类型为DECIMAL
goimt 2015-06-10
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
浮点数为表示很大的数,丢失了部分精度 所以在比较时应用: 两个数的差的绝对值小于某个极小数时就视为相等 的策略 或者用 round 取得有效数后在比较 如果你的应用需要有精确的小数位数(比如金融)那么应该使用 DECIMAL 类型
那现在查询语句要怎么改才能正常查询,谢谢
Suckor 2015-06-10
  • 打赏
  • 举报
回复
这个还是蛮正常的 毕竟float数据没有办法保证数据的精度呢
xuzuning 2015-06-10
  • 打赏
  • 举报
回复
浮点数为表示很大的数,丢失了部分精度 所以在比较时应用: 两个数的差的绝对值小于某个极小数时就视为相等 的策略 或者用 round 取得有效数后在比较 如果你的应用需要有精确的小数位数(比如金融)那么应该使用 DECIMAL 类型

21,873

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧