《程序是怎样跑起来的》第三章

       将小数分为符号、尾数、基数、指数四部分进行表现的形式称为浮点数(浮点数形式)。在计算机中用二进制数表示小数,不过,使用二进制数来表示整数和小数的方法有很大不同。计算机之所以会出现运算错误是因为“有一些十进制数的小数无法转换成二进制数”。计算机无法得到正确的数值,最后都变成了近似值,且计算机无法处理无限循环的小数,所以计算机会根据变量数据类型所对应的长度将数值从中间阶段或者四舍五入。

       在很多编程语言中都提供了两种表示小数的数据类型——双进度浮点数类型(double)和单精度浮点数类型(float)。前者用64位、后者用32位来表示全体小数。浮点数是指用符号、尾数、基数和指数这四部分来表示的小数,基数为2,在实际数据中往往不考虑基数。双精度浮点数和单精度浮点数在表示同一个数值时使用的位数不同,因此,前者能够表示的数值范围要大于后者。符号部分是指用一个数据位来表示数值的符号。数据位是1时表示负,为0时表示“正或者0”。数值的大小用尾数部分和指数部分来表示。尾数部分用的是“将小数点前面的值固定为1的正则表达式”,指数部分用的是“EXCESS系统表现”。

       尾数部分使用正则表达式(按照特定的规则来表示数据的形式)。在二进制数中,通常使用的是“将小数点前面的值固定为1的正则表达式”。指数部分使用EXCESS系统主要是为了表示负数时不使用符号位。在某些情况下,指数部分需要通过“负OO次幂”的形式来表示负数。EXCESS系统指将指数部分表示范围的中间值设为0,使得负数不需要用符号来表示。

       避免计算机出错有两种方法,一个是回避策略,即无视这些错误。另一个是把小数转换成整数来计算。除此之外,BCD也是使用二进制表示十进制的方法。

原文地址:https://www.cnblogs.com/1999dbl/p/10467446.html