论坛首页 综合技术版 Database

mysql 的 float问题

浏览 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

不知道大家有没有什么好的方案??

   
论坛首页 综合技术版 Database

跳转论坛:
JavaEye推荐