MYSQL中DECIMAL类型的深入学习

本文回顾了计算机中实数存储方式的发展历程,从早期的定点数存储到现代广泛使用的浮点数存储,并详细解析了浮点数的内部存储结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值