第三章——计算机进行小数运算时出错的原因
在使用小数运算时计算机也会出错,这是因为有些十进制的小数无法转换为二进制数———例如二进制数0.0000对应的十进制数是0,二进制数0.0001对应的十进制数为0.625,由此得之二进制数是连续的而十进制数不是连续的,那十进制数0~0.625之间的数就无法用二进制数表示,进而出现错误。
那实际上计算机内部是以什么形式来处理处理小数的呢?
很多编程语言用单精度浮点数32位和双精度浮点数64位来表示全体小数,浮点数是指用符号,尾数,基数,指数表示的小数。符号部分是指用一个数据位来表示数值的符号,尾数部分用将小数点前面固定为1的正则表达式,指数部分用的是EXCESS系统表现。
正则表达式——可以将表现形式多样的浮点数统一为一种表现形式。
EXCESS系统表现——通过将指数表示中间范围的中间值设为0,使得负数不用符号来表示。
如何避免计算机运算出错
- 采用回避方式既无视错误,用于不需要十分精确的数值时。
- 可以将小数转化为整数来计算。
- 在涉及财务计算等不允许出误差的情况下,一定要将小数转换为整数或者采用BCD方法。