
用 /4 » 1-1/3+1/5-1/7+...公式求的近似值,直到最后一项小余10的负6次方为止。
PrivateSubCommand1_Click()DimpiAsDouble,jAsDouble,kAsIntegerDoi=i+1j=1/(2*i-1)k=(-1)^...
Private Sub Command1_Click()
Dim pi As Double, j As Double, k As Integer
Do
i = i + 1
j = 1 / (2 * i - 1)
k = (-1) ^ (i + 1)
pi = pi + j * k
Loop While j < 10 ^ (-6)
Print "PI="; 4 * pi
End Sub
哪错了?
我是新手, 展开
Dim pi As Double, j As Double, k As Integer
Do
i = i + 1
j = 1 / (2 * i - 1)
k = (-1) ^ (i + 1)
pi = pi + j * k
Loop While j < 10 ^ (-6)
Print "PI="; 4 * pi
End Sub
哪错了?
我是新手, 展开
2个回答
展开全部
公式中每一项的表达式是(-1)^(n-1)/(2*n-1),你的输入就有错误,而且在左后应该是pi=pi+j/k,最后在输入精确度的时候你用的是while,就不应该是<而应该是>,在输入精确度时要用abs函数,是绝对值的意思,跌代的时候经常会变成负数,你不取绝对值的话,第一轮迭代就退出了,根本没有多次循环,肯定不准了。提供参考的代码
Dim a As Double, n As Single, t As Single
a = 0: n = 1: t = 1
Do
t = ((-1) ^ (n - 1)) / (2 * n - 1)
n = n + 1
a = a + t
Loop while abs( t )>0.000001
Print "pi=" & a * 4
Dim a As Double, n As Single, t As Single
a = 0: n = 1: t = 1
Do
t = ((-1) ^ (n - 1)) / (2 * n - 1)
n = n + 1
a = a + t
Loop while abs( t )>0.000001
Print "pi=" & a * 4
2010-04-09
展开全部
j>10^(-6)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询