1.正则表达式和 EXCESS系统
尾数部分使用正则表达式(按照特定的规则来表示数据的形式),可以将表现形式多种的浮点数统一为一种表现形式。如十进制小数0.75就有多种表现形式。为了方便计算机的处理,需要制定一个统一的规则
将小数点前面的值固定为1的正则表达式处理方法:
指数部分使用EXCESS系统,使用这种方式主要为了表示负数时不使用符号位。EXCESS系统指通过将指数部分表示范围的中间值设为0,使得负数不需要用符号来表示
2.在程序中得到确认
将十进制小数0.75用单精度浮点数分隔表示为
0(符号位)-01111110(指数部分)-10000000000000000000000(尾数部分)
0.75是正数,则符号位为0。指数部分是十进制126,则EXCESS系统表现为-1
根据正则表达式的规定,尾数部分为实际为1.10000000000000000000000这个二进制数。将尾数部分的二进制数转换成十进制数,结果就是1.5(1乘2的0次幂 + 1乘2的-1次幂)
所以结果为1.52^-1,刚好是0.75
3.但对0.1处理时,经过处理后计算
0-01111011-10011001100110011001101的值用十进制表示为1.52^-1=0.75这样的结果与0.1相差甚远,这就是计算机处理小数时出现错误的过程
避免计算机计算出错
计算机出错的原因之一是,采用浮点数来处理小数。作为程序的数据类型,不管是使用单精度浮点数还是双精度浮点数,都存在着出错的可能
4.避免出错介绍两种方法:
1,回避策略,即无视这些错误。有时一些细小的偏差不会造成什么问题
2,将小数转换成整数计算