laravel where查询比较float的字段大小时结果不对?

新手上路,请多包涵

->where("odd", ">", 0.3) 小于0.3的也查出来
->whereRaw("odd > 0.3") 结果正确

这是因为laravel的绑定参数导致的?
不用whereRaw应该怎么写?

阅读 1.9k
2 个回答
新手上路,请多包涵

个人认为是精度问题。where("odd", ">", 0.3)中0.3是单精度,而whereRaw("odd > 0.3")中0.3当作字符串。你可以验证下。

浮点数精度问题, 和 0.1+0.2 != 0.3 一样. 就直接转成字符串传到mysql吧.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题