查询生成器中使用 >= 对 mysql float 类型数据支持出现异常 [ 2.0 版本 ]
order->price
price 的数据是 float(10, 2)
order::find()->where(['>=', 'price', 10])->count();
得到的结果和根据相应 sql 得到结果不同(我遇到这种情况,没具体研究)
数据类型改成 decimal(10, 2)
就好了
怪!怪!
最佳答案
-
请记住一句话:永远不要对浮点数做大小比较运算!
所以,不管哪个PHP框架,甚至哪种编程语言,mysql也不例外,对浮点数的比较操作都有这种问题,这都是其计算机底层对浮点数的实现:IEEE754
所以,一通百通,不要怪yii2框架,也不要怪php。这个标准有利有弊,自己见多了就识广了。共 1 条回复specialnot 回复于 2018-12-04 10:28 回复感谢, 我自己一般是不用 float 的,处理遗留问题遇到的,后来发现是 float 比较的问题。遇到一处改一处吧
tisswb 觉得很赞
其他 0 个回答
没有找到数据。
specialnot
注册时间:2015-08-06
最后登录:2019-08-16
在线时长:27小时54分
最后登录:2019-08-16
在线时长:27小时54分
- 粉丝43
- 金钱1175
- 威望200
- 积分3445