.net 如何在下面的表达式中计算根
我有一个表达式.net 如何在下面的表达式中计算根,.net,vb.net,.net,Vb.net,我有一个表达式v((P1*P46)/3600),其中P1来自一个文本框,P46来自另一个文本框 例如:v((2.0*3.2)/3600) 我怎么计算呢 这是我的密码: Private Function calculatevitalexpression(ByVal strformulla As String, ByRef numtxt As TextBox, ByRef dtable As DataTable) Try strformulla =v((2.0*3.2)/3600)
v((P1*P46)/3600)
,其中P1来自一个文本框,P46来自另一个文本框
例如:v((2.0*3.2)/3600)
我怎么计算呢
这是我的密码:
Private Function calculatevitalexpression(ByVal strformulla As String, ByRef numtxt As TextBox, ByRef dtable As DataTable)
Try
strformulla =v((2.0*3.2)/3600)
Dim Sc As New MSScriptControl.ScriptControl
Sc.Language = "VBSCRIPT"
strformulla = RemoveCharacter(strformulla, "P")
Dim res As Double = Convert.ToDouble(Sc.Eval(strformulla))
Dim result As Decimal = Math.Round(res, decimalplaces)
numtxt.Text = result
Finally
'frmW.Close()
End Try
End Function
要使用
ScriptControl
组件实现这一点,您必须通过AddObject
将所有可能的输入值传递到控件中,以便脚本控件知道P1
和P46
是什么-例如(使用C#作为示例):
这将添加所有作为文本框的p..
控件及其文本值的数字版本
注意:不要删除p
(您的RemoveCharacter
行)-否则脚本看到的都是v((1*46)/3600)
-这根本不涉及您的输入
但是,有一些独立的表达式计算引擎可以完成这项工作,但是您仍然需要告诉它们外部值
foreach(var control in Controls) {
if(control is TextBox &&
control.Name.StartsWith("P"))
{ // ^^^ some crude way of finding the candidates
Sc.AddObject(control.Name, double.Parse(control.Text), false);
}
}