文字列数式評価(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)」
の形で書けるのが個人的に気に入っている。

コメント

このブログの人気の投稿

文字列数式評価(5)~各項の和

文字列数式評価(3)~符号処理

文字列数式評価(1)