-
浮点小数
- 浮点小数是“不精确的小数”,包括
float 和 double。
float:占用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 |
+