张店有小姐的ktv哪个好:有关算法可行性

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/06 02:27:32
在进行数值计算时,如果某计算工具具有7位有效数字(如程序设计语言中的单精度运算),则在计算下列三个量
A=1012,B=1,C=一1012
的和时,如果采用不同的运算顺序,就会得到不同的结果,即
A十B十C=1012十1十(一1012)=0 <1>
A十C十B=1012十(一1012)十1=1 <2>
而在数学上,A十B十C与A十C十B是完全等价的。因此,算法与计算公式是有差别的。在设计一个算法时,必须要考虑它的可行性,否则是不会得到满意结果的。

请问为什么<1>式结果为0?

既然我们假设只有 7 位有效数字,1012 的二进制是 11 1111 0100。那么它已经超过了 7 位,这么一来,有效数字就只有前 7 位。后面无论是什么,都会被忽略,即只有

11 1111 0[000]

1012 + 1 以后,其实值并没有变,因为它不在有效数字范围内。所以最后结果是 0。

上面说的似乎不对吧

这应该是Single类型变量的精度问题,对太小的数字single类型是没法精确存储的,所以会出现0的问题。对于<2>式来说则不存在这个问题。如果要精确计算的话要用Current类型的变量。