我们在最初学习C语言的时候,学习数据类型的时候接触到了浮点数,知道了它被用来存储小数,但是为什么在计算机中小数要称为浮点数呢?
在C语言中文网上,我知道了数据的存储分为定点数和浮点数,它们的命名方式也取决于它们存储数据的方式
C语言小数存储的方法有两种:定点数和浮点数
定点数
顾名思义,定点数就是小数点位置固定的数
下图以32bit机器为例,表示124.25
第一位数据为符号位,其余为数据位;数据位又被划分为整数部分和小数部分
使用定点数表示小数,小数点的位置固定
定点数的优缺点:
定点数的优点就是可以精确表示想要表示的数值,不会像浮点数一样计算机内部无法精确的表示一些数值
定点数的缺点就是不适用于表示特别大或者特别小的数值
浮点数
和定点数不同的是,浮点数表示小数时,小数点的位置是浮动的、不固定的
浮点数的存储格式,一般按照IEEE 754标准,表示方法如下:
最高的 1 位是符号位 s,接着的 8 位是指数E,剩下的 23 位为有效数字 M
浮点数的表示类似于科学计数法
十进制 | 二进制 | 浮点表示 |
---|---|---|
5 | 101 | 1.01 x 2^2 |
9 | 1001 | 1.001 x 2^3 |
100 | 01100100 | 1.100100 x 2^6 |
0.125 | 0.001 | 1 x 2^-3 |
数值范围不受限制,表示格式也不受限制,因此它能够表示比整数更大的数据;但是它的运算速度比整数运算低,且容易丢失精度