文字列数式評価(6/完)~メイン処理
細かく分けて関数化したので、メインのプログラムは数行で済む。
' 機 能 : 文字列を数値に変換する
' 書 式 : XEval(x)
' 返り値 : 10 進型小数
' 引 数 : x - 文字列
' 説 明 : x に数値を指定したときは倍精度の小数を返す
' (例) XEval("1/7") = 0.1428571428571428571428571429
' XEval( 1/7 ) = 0.142857142857143
' 注 意 : 変数や関数は文字列の外に出して指定する
' (例) XEval("(1+" & x & ")/2")
Public Function XEval(ByVal s)
Set XEval = New Triple
Dim s_ As String ' かっこ内の文字列
' かっこの中の処理
Do While InStr(s, "(")
XInPtxt s, s_
s = Replace(s, "(" & s_ & ")", XEval(s_))
Loop
' 連続している符号処理
s = XEval_Sign(s)
' 各項の和を計算
XEval = XEval_PM(s)
End Function
本文中には書かなかったが、「3+2√7」を「"3+2*" & Sqr(7)」
の形で書けるのが個人的に気に入っている。
コメント
コメントを投稿