计算机怎么处理小数的

一直使用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 10

二进制小数的表示和十进制的表示方法一样,二进制小数也是无法表示所有的数的,例如十进制的(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位二进制表示

例如下图

猜你喜欢

转载自www.cnblogs.com/huik-hub/p/9821822.html