求一道VB题目的解答问题

来源:百度知道 编辑:UC知道 时间:2024/06/03 19:31:09
计算圆周率 ∏的近似值, ∏的计算机公式为: ∏=2 x 2^2/(1x3)x4^2/(3x5)x…x(2xn)^2/((2xn-1)x(2xn+1)) 精度要求当第i项的值<0.00001时结束。

我是这样做的:
Option Explicit
Private Sub Form_click()
Dim i As Integer, b As String, c As String
b = 2
Do
i = i + 1
c = ((2 * i) ^ 2) / ((2 * i - 1) * (2 * i + 1))
b = b * c
Loop Until c < 0.00001
Print b
End Sub
但不行,不知道是什么问题,请高手帮我解答一下!

一看就知道算法有问题,拿第N项来说:
(2*N)^2/((2*N-1)*(2*N+1))=(2*N)^2/((2*N)^2-1)>1
无论如何第N项的值也不会小于1的,所以说算法是错误的。
应该是第N项的值<1.00001时结束才对。

Private Sub Form_click()
Dim i As Double, b As Double, c As Double
b = 2
Do
i = i + 1
c = ((2 * i) ^ 2) / ((2 * i - 1) * (2 * i + 1))
b = b * c
Loop Until c < 1.00001
Print b
End Sub

... 大哥让我费一次话吧 VB真难

不行是什么意思 结果不对 还是程序语法错误

你的代码好像就没按你题目的公式去算

Private Sub Form_click()
Dim i As Double, b As Variant, c As Variant
b = 2
Do
i = i + 1
c = ((2 * i) ^ 2) / ((2 * i - 1) * (2 * i + 1))
b = b * c
Debug.Print i, c, b
DoEvents
Loop Until c < 0.00001
Print b
End Sub

你的数据类型有问题,这个计算量很大,b和c只能是Varient类型,否则会溢出,另外你可以在立即窗口中看到i c b的值的变化,做好心理准备,估计要算个几分钟,因为你那个c的值设的太小

Option Explicit
Dim xx As Boolean

Private Sub Command1_Click()
xx = True
End Sub

Private Sub Form_click()