# mysql 浮点数的解释

  • https://www.cnblogs.com/fengju/p/6336162.html

# 默认的float表示范围

  • 默认范围是6个有效数字(小数部分和整数部分的个数加起来不能大于6个数)

mysql> CREATE TABLE `test` (
    ->   `id` float DEFAULT NULL
    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Query OK, 0 rows affected (0.02 sec)
    
mysql> insert test set id = '1234567';
    -> ;
Query OK, 1 row affected (0.00 sec)

mysql> insert test set id = '9999'
    -> ;
Query OK, 1 row affected (0.00 sec)

mysql> select * from test;
mysql> insert test set id = '999999'
    -> ;
Query OK, 1 row affected (0.01 sec)

mysql> select * from test;
mysql> insert test set id = '9999999'
    -> ;
Query OK, 1 row affected (0.01 sec)

mysql> select * from test;
mysql> insert test set id = '99999999';
Query OK, 1 row affected (0.01 sec)

mysql> select * from test;
mysql> insert test set id = '89999999';
Query OK, 1 row affected (0.00 sec)

mysql> select * from test;
mysql> insert test set id = '85999999';
Query OK, 1 row affected (0.00 sec)

mysql> select * from test;
mysql> insert test set id = '815999999';
Query OK, 1 row affected (0.01 sec)

mysql> select * from test;
mysql> insert test set id = '815399999';
Query OK, 1 row affected (0.00 sec)

mysql> select * from test;
mysql> insert test set id = '815329999';
Query OK, 1 row affected (0.00 sec)

mysql> select * from test;
mysql> insert test set id = '815321234';
Query OK, 1 row affected (0.00 sec)

mysql> select * from test;
mysql> insert test set id = '815321134';
Query OK, 1 row affected (0.01 sec)

mysql> select * from test;
mysql> insert test set id = '815.1212';
Query OK, 1 row affected (0.01 sec)

mysql> select * from test;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61

# 如果时候float(m, d) m>24时

  • 如果是float(25) 这建表命令会自动修改外double类型
  • 如果是float(25, 2) 则还是float类型, 有效数字是16位,
mysql> insert test5 set id = '999999999999999999999999.121222222';�
ERROR 1264 (22003): Out of range value for column 'id' at row 1
mysql> insert test5 set id = '99999999999999999999999.121222222';�
Query OK, 1 row affected (0.00 sec)

mysql> select * from test5;
mysql> insert test5 set id = '9999999999.121222222';�������������
Query OK, 1 row affected (0.00 sec)

mysql> select * from test5;
mysql> insert test5 set id = '9999999998.121222222';�
Query OK, 1 row affected (0.00 sec)

mysql> select * from test5;
mysql> insert test5 set id = '99999999989.121222222';
Query OK, 1 row affected (0.01 sec)

mysql> select * from test5;
mysql> select * from test5;
## 如果m小于24  float(9,2)

- 表示9位宽度有效数字,2位小数

```sql
mysql> show create table test7
    -> ;
mysql> insert into test7 set id = '1234678.412';���
Query OK, 1 row affected (0.01 sec)

mysql> insert into test7 set id = '12346789.412';
ERROR 1264 (22003): Out of range value for column 'id' at row 1
mysql> select * from test7;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32