计算机怎么处理小数的
一直使用float和double类型的变量,但从来还没有弄懂过这两种类型在计算机中怎么表示的。
首先了解一下十进制怎么表示小数:
1.在有限的小数位数里是无法表示所有的数的,例如1/3是无法写成小数的,他们是无限循环小数,还有各种无理数无线不循环小数,例如π=3.14159265358979323......,
使用小数是无法精确的表示所有的数的。
2.小数的表述形式上有多种,这里主要介绍一下指数表现形式例如下面:
0.985 = 0.985 x 100
0.985 = 9.85 x 10-1
0.985 = 0.0985 x 101
二进制小数的表示和十进制的表示方法一样,二进制小数也是无法表示所有的数的,例如十进制的(0.1)是不能表示为有限位的二进制小数的;
二进制小数也是可以表述成指数的形式的。
计算机表示方法,以下是IEEE754标准:
1、 IEEE 754 标准:
IEEE 754 标准成立于1985年,80年代起所有的计算机系统均支持IEEE 754
IEEE 754 对浮点数在计算机表示方法有三个主要的规定:
对于单精度(single precision):单精度浮点数位长:32位
(1) IEEE 754 标准规定:第1位为符号位,1 代表负,0代表正
(2) 接下来用8位来表示指数部分。
(3) 接下来的23位用来表示有效数位
IEEE 浮点标准表示: V = (-1)s * M * 2E
①、s 是符号位,为0时表示正,为1时表示负。
②、M为尾数,是一个二进制小数,它的范围是0至1-ε,或者1至2-ε(ε的值一般是2-k次方,其中设k > 0)
③、E为阶码,可正可负,作用是给尾数加权。
一般我们主要使用的程序语言中是类型主要有float和double两种,一种是单精度,一种是双精度
float是单精度的,采用32位二进制表示,其中1位符号位,8位阶码以及23位尾数。double是双精度的,采用64位二进制表示
例如下图