float数值类型用于表示单精度浮点数值, 而double数值类型用于表示双精度浮点数值
float和double都是浮点型, 而decimal是定点型
MySQL浮点型和定点型可以用类型名称后加(M,D)来表示, M表示该值的总共长度, D表示小数点后面的长度, M和D又称为精度和标度
如float(7,4), 最大可存入-999.9999, 如果尝试存入999.00009, 则存入结果为999.0001
浮点型和定点型的区别是浮点型在一些情况下数据库中存放的是近似值, 而定点型存放的永远都是精确值
浮点型不能做精确的计算, 其计算结果不准确, 只是近似, 而定点型可以做精确的计算
mysql > create table float_test(id int, float_test float);
mysql > desc float_test;
+------------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| float_test | float | YES | | NULL | |
+------------+---------+------+-----+---------+-------+
mysql > insert into float_test values(1, 123456),(2, 123.456),(3, 1234567),(4,1234.5678);
mysql > select * from float_test;
+------+------------+
| id | float_test |
+------+------------+
| 1 | 123456 |
| 2 | 123.456 |
| 3 | 123570 |
| 4 | 1234.57 |
+------+------------+