MYSQL中DECIMAL类型的深入学习
2017-02-05 17:26
369 查看
复习MYSQL的过程中,看到DECIMAL这个基本数据类型,忽然回想起了以前在学习微处理器时遇到过的定点数和浮点数的概念,于是在这里做一下笔记。
什么是定点数? 如00.11和99.65这样固定整数和小数位数的存储形式,就是定点数存储。
但是后来人们发现了定点数的缺点,其中很明显的缺点是浪费存储空间。
于是,浮点数存储开始出现了,并且应用到今天的主流编程语言之中。
没错,就是“科学计数法”;
如二进制数111.0011,可以记作1.110011*2^2,很明显,这里包含三部分:
(1)尾数
(2)阶码
(3)符号位(描述阶码的正负)
而按照IEEE的浮点型标准,目前浮点型有float(单精度32位)和double(双精度64位)两种形式。
对于float(32bits):
(1)尾数(23位),因为整数位一定为1,所以省略,所以实际上可以表示24位有效数字;
(2)阶码(8位);
(3)符号位(1位);
对于double(64bits):
(1)尾数(52位),实为53位有效数字;
(2)阶码(11位);
(3)符号位(1位);
好了,原本要将MYSQL的定点数(DECIMAL)的,却详细介绍了浮点数,但是浮点数理解了,定点数就不在话下了。
一. 定点数和浮点数的历史
在计算机出现之初,实数的存储成了业界争论的议题。而一开始,定点数的存储形式率先被应用于实数的存储。什么是定点数? 如00.11和99.65这样固定整数和小数位数的存储形式,就是定点数存储。
但是后来人们发现了定点数的缺点,其中很明显的缺点是浪费存储空间。
于是,浮点数存储开始出现了,并且应用到今天的主流编程语言之中。
二. 浮点数的存储
浮点,顾名思义就是小数点是浮动的,也就是说整数和小数部分是变化的。那怎么才能实现这种方式呢?没错,就是“科学计数法”;
如二进制数111.0011,可以记作1.110011*2^2,很明显,这里包含三部分:
(1)尾数
(2)阶码
(3)符号位(描述阶码的正负)
而按照IEEE的浮点型标准,目前浮点型有float(单精度32位)和double(双精度64位)两种形式。
对于float(32bits):
(1)尾数(23位),因为整数位一定为1,所以省略,所以实际上可以表示24位有效数字;
(2)阶码(8位);
(3)符号位(1位);
对于double(64bits):
(1)尾数(52位),实为53位有效数字;
(2)阶码(11位);
(3)符号位(1位);
好了,原本要将MYSQL的定点数(DECIMAL)的,却详细介绍了浮点数,但是浮点数理解了,定点数就不在话下了。
相关文章推荐
- MySQL:列类型深入学习及表管理(一)
- MySQL:列类型深入学习及表管理(二)
- MySQL学习笔记(八)―― MySQL的数据类型(日期型)
- T-sql 学习(4) - 深入讨论数据类型
- mysql decimal、numeric数据类型
- Mysql学习笔记之常用数据类型
- MySQL float,double,decimal数据类型区别
- 惭愧,直到今天才对“数据类型字节对齐”有个深入的了解,对以前读书时学习的知识没有深刻理解啊 C/C++学习 C/C++学习 漫漫人生,澎湃的经历不断促使改变自己,永恒不变的是一颗骄傲的心!
- opencv深入学习(2)--Scalar类型
- mysql学习笔记-字段类型(一)
- MySQL入门很简单-学习笔记 - 第 4 章 MySQL数据类型
- MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结
- MySQL decimal 类型
- mysql decimal、numeric数据类型
- MySQL 数据类型学习笔记
- MYSQL decimal类型详解
- MySQL学习笔记(九)―― MySQL的数据类型(复合型)
- mysql中的decimal类型
- MySQL之Explain深入学习
- MySQL decimal 类型