mysql float double类型的比较

admin 2014年09月05日 MySql学习 993次阅读 查看评论

  • mysql float double类型



  • mysql  float double类型



  • 1.float类型
    float列类型默认长度查不到结果,必须指定精度,
    比如 num float, insert into table (num) values (0.12); select * from table where num=0.12的话,empty set。
    num float(9,7), insert into table (num) values (0.12); select * from table where num=0.12的话会查到这条记录。
    mysql> create table tt
    -> ( www.2cto.com
    -> num float(9,3)
    -> );
    Query OK, 0 rows affected (0.03 sec)
    mysql> insert into tt(num)values(1234567.8);
    ERROR 1264 (22003): Out of range value for column 'num' at row 1
    注:超出字段范围,无法插入
    mysql> insert into tt(num)values(123456.8);
    Query OK, 1 row affected (0.00 sec)
    mysql> select * from tt;
    +------------+
    | num |
    +------------+
    | 123456.797 |
    +------------+
    1 row in set (0.00 sec)
    注:小数位数不够,自动补齐,但是存在一个问题就是如上的近似值。
    mysql> insert into tt(num)values(123456.867);
    Query OK, 1 row affected (0.04 sec)
    mysql> select * from tt;
    +------------+ www.2cto.com
    | num |
    +------------+
    | 123456.797 |
    | 123456.797 |
    | 123456.867 |
    +------------+
    3 rows in set (0.00 sec)
    mysql> select * from tt where num=123456.867;
    +------------+
    | num |
    +------------+
    | 123456.867 |
    +------------+
    1 row in set (0.00 sec)
    mysql> insert into tt(num)values(2.8);
    Query OK, 1 row affected (0.04 sec)
    mysql> select * from tt;
    +------------+
    | num |
    +------------+
    | 123456.797 |
    | 123456.797 |
    | 123456.867 |
    | 2.800 |
    +------------+
    4 rows in set (0.00 sec)
    mysql> select * from tt where num=2.8;
    +-------+ www.2cto.com
    | num |
    +-------+
    | 2.800 |
    +-------+
    1 row in set (0.00 sec)
    mysql> insert into tt(num)values(2.888888);
    Query OK, 1 row affected (0.00 sec)
    mysql> select * from tt;
    +------------+
    | num |
    +------------+
    | 123456.797 |
    | 123456.797 |
    | 123456.867 |
    | 2.800 |
    | 2.889 |
    +------------+
    5 rows in set (0.00 sec)
    注:小数位数超了,自动取近似值。
    --------------------------------------------------------------------------------------
    2.double类型
    mysql> create table tt(
    -> num double(9,3)
    -> );
    Query OK, 0 rows affected (0.02 sec)
    mysql> insert into tt(num) values(234563.9);
    Query OK, 1 row affected (0.00 sec)
    www.2cto.com
    mysql> select * from tt;
    +------------+
    | num |
    +------------+
    | 234563.900 |
    +------------+
    1 row in set (0.00 sec)
    mysql> insert into tt(num) values(2345623.2);
    ERROR 1264 (22003): Out of range value for column 'num' at row 1
    mysql> insert into tt(num) values(234563.2);
    Query OK, 1 row affected (0.00 sec)
    mysql> select * from tt;
    +------------+
    | num |
    +------------+
    | 234563.900 |
    | 234563.200 |
    +------------+
    2 rows in set (0.00 sec)
    mysql> insert into tt(num) values(2.8);
    Query OK, 1 row affected (0.00 sec)
    mysql> select * from tt;
    +------------+
    | num |
    +------------+
    | 234563.900 |
    | 234563.200 |
    | 2.800 |
    +------------+
    3 rows in set (0.00 sec)
    FLOAT(M,D)或REAL(M,D)或DOUBLE PRECISION(M,D)。这里,“(M,D)”表示该值一共显示M位整数,其中D位位于小数点后面。
    例如,定义为FLOAT(7,4)的一个列可以显示为-999.9999。MySQL保存值时进行四舍五入,因此如果在FLOAT(7,4)列内插入999.00009,近似结果是999.0001。
    作者 chow__zh


« 上一篇 下一篇 » admin原创文章,转载请注明出处! 标签:mysqlmysql数据类型doublefloat

相关日志:

«   2019年7月   »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  [查看权限]
网站分类
文章归档
网站收藏
友情链接
图标汇集