要精確到0.1可以這樣調用 MsgBox GetX(1, 2, 0.1)
以下是代碼
Option Explicit
Private Sub Form_Load()
MsgBox GetX(1, 2)
End Sub
Function GetX(ByVal LowNum As Single, ByVal TopNum As Single, Optional ByVal N As Single = 0.000001) As Single
Dim LowFx As Single, TopFx As Single
Dim MidX As Single, MidFx As Single
LowFx = GetFx(LowNum)
TopFx = GetFx(TopNum)
MidX = (LowNum + TopNum) / 2
If TopFx - LowFx <= N Then
GetX = MidX
Else
MidFx = GetFx(MidX)
If Sgn(MidFx) = 0 Then
GetX = MidX
ElseIf Sgn(MidFx) * Sgn(LowFx) > 0 Then
GetX = GetX(MidX, TopNum, N)
Else
GetX = GetX(LowNum, MidX, N)
End If
End If
End Function
Function GetFx(ByVal X As Single) As Single
GetFx = 2 ^ X + 3 * X - 7
End Function