浏览 188 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-06-04
前两天提了mysql 的 AUTO_INCREMENT 问题 今天再提mysql的一个问题: 假设table中有一个price=28.8的记录(price为float型),那么你用 select * from table where price=28.8
是有可能select不到这条记录的,因为10进制和2进制之间的误差,这个28.8有可能是28.7999999 到目前为止我想到是有两个方案: 一个是这样select(其实在对精准要求比较高的情况下,这样可能是有问题) select * from table where price>28.7 and price<28.9 还有一个是在设计的时候比较fancy的解决方案(号称google是这样搞的): 根本不设计float型的字段,而是用一个int型+标识这个int型的小数位来代替float型,也就是price=28.8在数据库中存的是price=288,precision=1 不知道大家有没有什么好的方案?? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |


