Private Sub Command1_Click()
Dim i%, n&, t!, e!
e = 2
i = 1
t = 1
Do While t >0.00001
i = i + 1
t = t / i
e = e + t
Loop
Print "计算了"; i; "项目和是:"; e
Print Exp(1) ‘与上句输出值进行对比以证明算法的正确性
End Sub
这种算法是有问题的,不能达到指定的精度的!t <= 0.00001 时结束了循环,这个只是到这一项为止,该项的值比精度小,但是不能保证被舍掉的后面部分(无穷项之和)阶乘的倒数之和比指定的精度小!
不足近似值:按照所需要的精确度截取指定数位后,直接略去后面的数位,这样就得到了一个小于真实值的近似值,叫做不足近似值。性质:
比真实值小,当截取的数位后一位数字小于5时,比过剩近似值更接近真实值。过剩近似值:
定义:把数按需要截取指定数位后,如果去掉的部分最高位上的数是5或者比5大,就在保留部分的最后一位数上加1(称为“五入”),这样得到的近似值叫过剩近似值。
性质:该近似值大于真实值。
C语言算法描述。将该公式看成求N项和公式。定义三个变量:1、i(为int),用来记分项的序号;2、用变量temp表示分子值(为long);3、用变量sum表示前N项和(为double).程序如下:
void main(){
int i=1
long temp=1
double sum=1.
for(1.0/temp<1e-4){
sum=sum+1/temp
i=i+1
temp=temp*i
}
printf("E=%lf",sum)
}