VB编程题。(请高手帮我看下)

来源:百度知道 编辑:UC知道 时间:2024/06/24 08:14:22
近似计算COS(X)=1-X^2/2!+X^4/4!-X^6/6!+……(X为弧度,计算精度为10-8)
Private Sub Form_Click()
Dim x As Integer
Dim i As Integer
x = Val(InputBox("请输入弧度x"))
s = 1
i = 1
Do While fun(x, 2 * i) > 0.00000001
s = s + fun(x, 2 * i) * (-1) ^ i
i = i + 1
Loop
Print "COS(X)="; s
End Sub
Function fun(x As Integer, i As Integer) As Single
Dim n As Integer
Dim j As Long
j = 1
For n = 1 To i
j = j * n
Next n
fun = x ^ i / j
End Function

运行时,j=j*n溢出,请高手帮我修改下程序。
1,2楼的我都看了,还是不行……

定义i为全局变量.

形参I和实参I重复了,

Private Sub Form_Click()
Dim x As Integer
Dim i As Integer
x = Val(InputBox("请输入弧度x"))
s0 = 0
s1 = 1
i = 1
Do While Abs(s1 - s0) > 0.00000001
Print "第" & i & "次近似后COS(X)="; s1

s0 = s1
s1 = s1 + fun(x, 2 * i) * (-1) ^ i
i = i + 1
Loop
Print "COS(X)="; s1
End Sub
Function fun(x As Integer, i As Integer) As Double
Dim n As Integer
Dim j As Double
j = 1
For n = 1 To i
j = j * n
Next n
fun = x ^ i / j
End Function

'函数里变量定义整型太小 要知道long最大才 2,147,483,647 计算阶乘很容易溢出