随笔分类 - 第三章计算机进行小数运算时出错的原因
摘要:二进制数和十六进制数的关系。在以单位表示数据时,使用二进制数很方便,但如果位数太多,看起来就比较麻烦。因此,在实际程序中,也经常会用十六进制数来代替二进制数。在C语言程序中,只需在数值的开头加上0x(0和x)就可以表示十六进制数。 二进制数的4位,正好相当于十六进制的一位。用十六进制来表示二进制小数
阅读全文
摘要:计算机计算出错有两种避免该问题的方法: 首先是回避策略,即无视这些错误。根据程序目的的不同,有时一些微小的偏差并不会造成什么问题。一般来讲,在科学技术计算领域,计算机的计算结果只要能得到近似值就足够了。那些微小差完全可以忽略掉。 另一个策略是把小数转换成整数来计算。计算机在进行小数计算时可能会出错,
阅读全文
摘要:通过上面几节我们不能仅仅读一遍就能理解,而是要从实际程序中加以确认。如代码清单3-2所示。如何用单精度浮点数来表示十进制数0.75。 该程序执行后,十进制数0.75用单精度浮点数来表示就变成了0-01111110-1000000000000000000000(图3-7)。加破折号(-)是为了区分符号
阅读全文
摘要:尾数部分使用正则表达式,可以将表现形式多样的浮点数统一为一种表现型时。例如,十进制数 0.75就有很多中表现形式,如图3-5所示。 单精度浮点数的正则表达式具体例子如图3-6所示。 指数部分中使用EXCESS系统,使用这种方法主要是为了表示负数时不使用符号位。在某种情况下,在指数部分,需要通过“负O
阅读全文
摘要:很多编程语言中都提供了两种表示小数的数据类型,分别是双精度浮点数和单精度浮点数。双精度浮点数类型用64位、单精度浮点数类型用32位来表示全体小数。在语言中一般,双精度浮点数类型和单精度浮点数类型分别用double和float来表示。 浮点数是指用符号、尾数、基数和指数这四部分来表示的小数(图3-3)
阅读全文
摘要:计算机之所以会出现运算错误,是因为“有一些十进制数的小数无法转换成二进制数”。图3-2中,小数点后4位用二进制数表示时的数值范围为0.0000~0.1111。因此,这里只能表示0.5、0.25、0.125、0.0625这四个二进制数小数点后面的位权组合而成(相加总和)的小数。将这些数值组合后能够表示
阅读全文
摘要:计算机内部所有信息都是以二进制数的形式来处理的,因此在这一点上,整数和小数并无差别。不过,使用二进制数来表示整数和小数的方法却有很大不同。 我们举一个例子,如图3-2只需要将各位数值和位权相乘,然后再将相乘的结果相加即可实现。
阅读全文
摘要:代码清单3-1是将0.1累加100次,然后将结果输出到显示器上的C语言程序。 0.1累加100次后的结果是10。但是代码清单3-1的程序运行后,显示器上显示的结果并不是10(图3-1)。 这是与计算机处理小数的机制有关。
阅读全文