MySql 数据类型 - 小数型

442 阅读1分钟
  • 小数类型分为 浮点小数定点小数

  • 浮点小数

    • 浮点小数是“不精确的小数”,包括 floatdoublefloat:占用4字节存储空间,可称为“单精度浮点数”,约7位有效数字。 double:占用8字节存储空间,可称为“双精度浮点数”,约17位有效数字。

  • 定点小数

    • 浮点小数是“精确的小数”一一它通过内部技巧,突破了“有些小数无法用二进制精确表示”的局限。
    • 其设定方式通常是这样的: decimal(M, D); 其中M表示该小数总位数(包含小数点前后部分,最大长度65),D表示该小数的小数点后的位数。

  • 使用效果

    定义三个字段分别为 float、double 和 decimal 类型,并都插入数字 123456789.123456789123456789 显示结果,注意三者保留数值精度也不一样。
mysql> desc user;
+-------+----------------+------+-----+---------+-------+
| Field | Type           | Null | Key | Default | Extra |
+-------+----------------+------+-----+---------+-------+
| x1    | float          | YES  |     | NULL    |       |
| x2    | double         | YES  |     | NULL    |       |
| x3    | decimal(23,14) | YES  |     | NULL    |       |
+-------+----------------+------+-----+---------+-------+
mysql> insert into user (x1, x2, x3) values (123456789.123456789123456789, 123456789.123456789123456789, 123456789.123456789123456789);
mysql> select * from user;
+-----------+--------------------+--------------------------+
| x1        | x2                 | x3                       |
+-----------+--------------------+--------------------------+
| 123457000 | 123456789.12345679 | 123456789.12345678912346 |
+-----------+--------------------+--------------------------+