mysql decimal型转化为float_5分钟搞懂MySQL数据类型之数值型DECIMAL类型
5分鐘搞懂MySQL數據類型
之數值型--DECIMAL類型
DECIMAL類型的語法:DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]。其中M指定的是數字的總位數(精度,最大65,默認值10),D指定的是小數點后數字的位數(最大30,并且不能大于M),如果D為0或未指定,表示該數值沒有小數,也就是說DECIMAL(M)=DECIMAL(M,0)。
舉幾個示例:
mysql> create table t1(salaryDECIMAL(5,2));
Query OK, 0 rows affected (0.12 sec)
mysql> insert into t1 values (999.99);
Query OK, 1 row affected (0.01 sec)
mysql> insert into t1 values (999);
Query OK, 1 row affected (0.02 sec)
mysql> insert into t1 values (-999.99);
Query OK, 1 row affected (0.02 sec)
mysql> select * from t1;
+---------+
| salary?|
+---------+
|?999.99 |
|?999.00 |
| -999.99 |
+---------+
3 rows in set (0.02 sec)
mysql> insert into t1 values (1000);
ERROR 1264 (22003): Out of range value forcolumn 'salary' at row 1
mysql> insert into t1 values (999.999);
ERROR 1264 (22003): Out of range value forcolumn 'salary' at row 1
在本例中,salary字段能夠存儲的數值范圍即是-999.99 to 999.99。認真看,看懂了這個示例中m, d的作用,應該能幫助大家運用好DECIMAL類型。
那么,DECIMAL到底占用多少空間呢?這個,得看情況。MySQL采用二進制格式保存DECIMAL值,每個數值的整數和小數部分都是分別獨立存儲,并且會將每9個數位打包成4個字節,剩余不到9個數位的,再分配另外的空間。不同數位長度與字節數之間的關系如下表:
| 1-2 | 1字節 |
| 3-4 | 2字節 |
| 5-6 | 3字節 |
| 7-9 | 4字節 |
聽起來可能有些抽象,還是通過示例來補充描述一下吧。例如DECIMAL(18,9)列小數點前后各有9個數位,因此各需要4個字節存儲;DECIMAL(20,9)列的小數部分需要4個字節,整數部分11個數位就需要4+1共5個字節;DECIMAL(25)列共需要4+4+4共計12個字節的存儲空間。
NUMERIC類型的實現與DECIMAL相同,因此搞明白DECIMAL就同理可得NUMERIC了。
點擊了解:5分鐘搞懂MySQL數據類型之整型--INT類型
END掃碼關注我們勤勤懇懇,善始善終持之以恒,專心致志總結
以上是生活随笔為你收集整理的mysql decimal型转化为float_5分钟搞懂MySQL数据类型之数值型DECIMAL类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2500左右的影音娱乐笔记本排行榜 25
- 下一篇: mysql 变量 数据类型_浅谈mysq