Public Function ArcCos(ByVal Y As Double) As Double '反余弦函数 If Y = 0 Then ArcCos = 90: Exit Function ArcCos = Atn(Sqr(1 / Y ^ 2 - 1)) * 180 / 3.1415926 End Function
Private Sub Command1_Click() Dim y As Double, jd As Double y = 0.5 jd = arccos(y) Debug.Print jd End Sub Function arccos(ByVal y As Double) As Double Dim hd As Double hd = Atn(-y / Sqr(1 - y * y)) + 2 * Atn(1) arccos = hd * 180 / "3.1415926535897932384626433832795" End Function
结合下阿勇化简的公式Public Function ArcCos(ByVal Y As Double) As Double If Y = 0 Then ArcCos = 90: Exit Function ArcCos = Atn(Sqr(1 / Y ^ 2 - 1)) * 180 / CDbl("3.1415926535897932384626433832795") End Function
If Y = 0 Then ArcCos = 90: Exit Function
ArcCos = Atn(Sqr(1 / Y ^ 2 - 1)) * 180 / 3.1415926
End Function
Dim y As Double, jd As Double
y = 0.5
jd = arccos(y)
Debug.Print jd
End Sub
Function arccos(ByVal y As Double) As Double
Dim hd As Double
hd = Atn(-y / Sqr(1 - y * y)) + 2 * Atn(1)
arccos = hd * 180 / "3.1415926535897932384626433832795"
End Function
If Y = 0 Then ArcCos = 90: Exit Function
ArcCos = Atn(Sqr(1 / Y ^ 2 - 1)) * 180 / CDbl("3.1415926535897932384626433832795")
End Function