文字列の数式を計算したい
投稿者 オショウ  (社会人)
投稿日時
2009/12/20 02:44:52
http://dobon.net/vb/dotnet/programing/eval.html
以上。参考まで
以上。参考まで
投稿者 cupid  (社会人)
投稿日時
2009/12/21 06:50:12
これは一種のコンパイラーコンパイラーのようなものですから簡単じゃないはずです。
誤った式が来る可能性もあります。例えば 10*(3+2-+25 の様にですね。
> 何か良い方法はありますか?
多分、無いですね。古典的には、プッシュダウン・スタックとかの手法があります。
高等数学では、「逆ポーランド法」を主張する一派もあるようですが、.....
誤った式が来る可能性もあります。例えば 10*(3+2-+25 の様にですね。
> 何か良い方法はありますか?
多分、無いですね。古典的には、プッシュダウン・スタックとかの手法があります。
高等数学では、「逆ポーランド法」を主張する一派もあるようですが、.....
投稿者 cupid  (社会人)
投稿日時
2009/12/21 07:13:47
思い出しました。Scriptを利用する方法はあるかもしれませんね。
abc.vbsというTextファイルを作って、中に下記を書いて置く。
dim atai
atai = (10 / 3) + 1.01
call msgbox(CStr(atai))
それで、abc.vbsをWクリックすると答えは出ますから、アプリケーション内に
Script機能を取り込む方法はあるかもしれません。ただしWinXP/SP2以降でです。
abc.vbsというTextファイルを作って、中に下記を書いて置く。
dim atai
atai = (10 / 3) + 1.01
call msgbox(CStr(atai))
それで、abc.vbsをWクリックすると答えは出ますから、アプリケーション内に
Script機能を取り込む方法はあるかもしれません。ただしWinXP/SP2以降でです。
投稿者 (削除されました)  ()
投稿日時
2009/12/22 01:24:28
(削除されました)
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2009/12/22 01:25:58
> アプリケーション内にScript機能を取り込む方法はあるかもしれません。
オショウさんが紹介された URL にある『ScriptControl』を使う事で
VBScript 等をアプリ上から利用できます。
他にはこんな方法とか、
あるいは、こういった方法もあります。
オショウさんが紹介された URL にある『ScriptControl』を使う事で
VBScript 等をアプリ上から利用できます。
他にはこんな方法とか、
Dim expression As String = "50*20/4+12*10"
Dim t As New DataTable()
t.Columns.Add("数式", GetType(String), expression)
MsgBox(t.Rows.Add()("数式"))
あるいは、こういった方法もあります。
Dim expression As String = "50*20/4+12*10"
Dim t As New DataTable()
MsgBox(t.Compute(expression, ""))
例
String型で
50*20/4+12*10
のように指示している文字列を計算したいのですが・・・
何か良い方法はありますか?