zoukankan      html  css  js  c++  java
  • 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
    -> (
    -> 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;
    +------------+
    | 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;
    +-------+
    | 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)

    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。

  • 相关阅读:
    NS2 nam中节点及数据流颜色设置
    JSF简单介绍
    深入浅出谈开窗函数(一)
    BZOJ2440(全然平方数)二分+莫比乌斯容斥
    怎样在SharePoint管理中心检查数据库架构版本号、修补级别和修补程序的常规监控
    Java实现BASE64编解码
    博弈 个人 见解
    【剑指offer】第一个仅仅出现一次的字符
    cocos2d基础篇笔记四
    SSL连接建立过程分析(1)
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5077565.html
Copyright © 2011-2022 走看看