Private Sub Form_Click()
For i = 0 To 180 Step 5
myCos i
Next
End Sub
Private Function myCos#(ByVal xAngle#, Optional bDegree As Boolean = True)
'COS(x)=1- X2/2!+ X4/4!- X6/6
Dim xAng#, PI#, e#, rst#, xPow#, nTmp#, n%, nJ#
e = 1E-16 ' 误差控制
PI = 4 * Atn(1) ' 计算PI值
xAng = IIf(bDegree, xAngle / 180 * PI, xAngle) '转化弧度
'Debug.Print "角度:"; xAng / PI * 180, "弧度:"; xAng
n = 0: nJ = 1
rst = 0: nTmp = 1
xPow = 1#
Do
rst = rst + nTmp
n = n + 2
nJ = nJ * (1 - n) * n
xPow = xPow * xAng * xAng
nTmp = xPow / nJ
Loop Until Abs(nTmp) < e
myCos = rst
Debug.Print "结果: Cos("; xAng / PI * 180; ")="; rst, Cos(xAng), "误差为:", Cos(xAng) - rst
End Function
Private Sub Form_Click()
For i = 0 To 180 Step 5
myCos i
Next
End Sub
Private Function myCos#(ByVal xAngle#, Optional bDegree As Boolean = True)
'COS(x)=1- X2/2!+ X4/4!- X6/6
Dim xAng#, PI#, e#, rst#, xPow#, nTmp#, n%, nJ#
e = 1E-16 ' 误差控制
PI = 4 * Atn(1) ' 计算PI值
xAng = IIf(bDegree, xAngle / 180 * PI, xAngle) '转化弧度
'Debug.Print "角度:"; xAng / PI * 180, "弧度:"; xAng
n = 0: nJ = 1
rst = 0: nTmp = 1
xPow = 1#
Do
rst = rst + nTmp
n = n + 2
nJ = nJ * (1 - n) * n
xPow = xPow * xAng * xAng
nTmp = xPow / nJ
Loop Until Abs(nTmp) < e
myCos = rst
结果: Cos("; xAng / PI * 180; ")="; rst, Cos(xAng), "误差为:", Cos(xAng) - rst
End Function