• 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。

  • 相关阅读:
    Alook搭配JS脚本完美食用
    分享小米刷机教程/线刷(工具支持小米华为一加)
    iPhone 无需越狱修改wx+zfb+qq步数
    如果SELECT语句中没有结果,则使用CASE返回字符串
    MSSQLServer 正在显示"正在还原...."
    C# 小技巧
    C#使用Select方法快速获取List集合集合中某个属性的所有值集合
    C#中使用Sum方法对List集合进行求和操作
    sql日期函数
    sql只根据某一字段去重,并保留其他字段
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5077565.html
Copyright © 2020-2023  润新知