复习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)的,却详细介绍了浮点数,但是浮点数理解了,定点数就不在话下了。
新闻热点
疑难解答