float类型在使用的时候应该注意些什么呢。直接设置成float,默认的是几位整数与几位小数??
mysql> create table test(id float,id2 float(12,4));
Query OK, 0 rows affected (0.01 sec)mysql> insert into test values(123456.2341,2342334,5234);
ERROR 1136 (21S01): Column count doesn't match value count at row 1
mysql> insert into test values(123456.2341,234233.5234);
Query OK, 1 row affected (0.00 sec)mysql> select * from test;
+--------+-------------+
| id     | id2         |
+--------+-------------+
| 123456 | 234233.5156 | 
+--------+-------------+
1 row in set (0.00 sec)这样的近似值 ,该怎么解释???

解决方案 »

  1.   

    FLOAT 是浮点数,不存在几位小数的问题。 浮点数是无法精确表示所有小数的。如果有精度上的需要则应该使用decimal
      

  2.   

    使用浮点数可能会遇到意想不到的问题,因为在MySQL中的所有计算用双精度完成。
      

  3.   

    那难道我应该使用double类型??
      

  4.   

    double也是浮点数。只不过精度比float高。但仍无法准确表示小数。
      

  5.   

    MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  6.   

    我个人在项目中一般不用float,都是用整型
    需要的时候,再转换成float,
    比如0.02元,在数据库中是2
    需要的时候,再在程序员把小数点移两位这一方面不需要担心精度问题(一般来说我们都可以明确到要精确到几位)
    另一方面也简单(我觉得处理浮点数总是麻烦)
      

  7.   

    使用decimal比较正规一些。它帮你保留小数。