关于C# winform里面公式计算的问题

时间:2022-09-03 18:58:30
有如下问题请教各位大大:
    
1、环境:.net framework2.0  
         SQL Server2000数据库
         winform程序

2、问题主题:计算数据库中存储的计算公式计算出需要的值(计算公式中带有参数)

3、例如数据库中如下存储: (字段横向看)
           字段:    Parameter   Formula1  Formula1Info   Formula2   Formula2Info
 
 数据库保存内容:   X,Y,Z       L         2X+3Y-Z        R          (X*Y)/Z

 如传入3个值 20,30,60 (带入3个值时,只能用顺序对应上述参数值) 。最后计算得出结果  L = 70,R = 10

   
   说明:其中参数个数和名称都是可变的,存什么是什么,但是可以和后面公式里肯定能匹配,这点不用考虑。
   另数据库格式不能改变,因为这是在人家数据库基础上做二次开发。

请各位大大帮忙想个好的方法,能提供第三方也行。

6 个解决方案

#1


基本的计算使用new DataTable.Compute("1+1","")计算
函数使用matlab等 http://topic.csdn.net/u/20100107/15/bfcd4874-376b-4745-beae-277dce9acbb2.html

#2


引用 1 楼 wuyq11 的回复:
基本的计算使用new DataTable.Compute("1+1","")计算
函数使用matlab等http://topic.csdn.net/u/20100107/15/bfcd4874-376b-4745-beae-277dce9acbb2.html


这个办法好!

#3


引用 1 楼 wuyq11 的回复:
基本的计算使用new DataTable.Compute("1+1","")计算
函数使用matlab等http://topic.csdn.net/u/20100107/15/bfcd4874-376b-4745-beae-277dce9acbb2.html


能不能说的更详细一点?
继续等待其他高手的方法

#4


2楼的意思是,传参数->构造计算式->利用datatable的Compute方法计算结果
就这么简单

#5


可借助office库Microsoft Script Control进行计算
1:引用Interop.MSScriptControl.dll库。
2:代码
//表达式
string displayString = @“1 * 2 /(3 + 4)”;
//计算数据
MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControlClass();
                    sc.Language = "JavaScript";
var result = sc.Eval(valueString).ToString();

#6


不好意思,都差点忘记结贴了。

datatable的Compute方法我自己一早就考虑过,但是当时想我要计算的是带参数的表达式,所以总认为这个方法不能达到目的。
但是忽然想通了,因为问的参数是可以和数值对应的,那样,我可以把表达式里面的参数用数值替换掉,然后再用datatable.Compute直接计算。

#1


基本的计算使用new DataTable.Compute("1+1","")计算
函数使用matlab等 http://topic.csdn.net/u/20100107/15/bfcd4874-376b-4745-beae-277dce9acbb2.html

#2


引用 1 楼 wuyq11 的回复:
基本的计算使用new DataTable.Compute("1+1","")计算
函数使用matlab等http://topic.csdn.net/u/20100107/15/bfcd4874-376b-4745-beae-277dce9acbb2.html


这个办法好!

#3


引用 1 楼 wuyq11 的回复:
基本的计算使用new DataTable.Compute("1+1","")计算
函数使用matlab等http://topic.csdn.net/u/20100107/15/bfcd4874-376b-4745-beae-277dce9acbb2.html


能不能说的更详细一点?
继续等待其他高手的方法

#4


2楼的意思是,传参数->构造计算式->利用datatable的Compute方法计算结果
就这么简单

#5


可借助office库Microsoft Script Control进行计算
1:引用Interop.MSScriptControl.dll库。
2:代码
//表达式
string displayString = @“1 * 2 /(3 + 4)”;
//计算数据
MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControlClass();
                    sc.Language = "JavaScript";
var result = sc.Eval(valueString).ToString();

#6


不好意思,都差点忘记结贴了。

datatable的Compute方法我自己一早就考虑过,但是当时想我要计算的是带参数的表达式,所以总认为这个方法不能达到目的。
但是忽然想通了,因为问的参数是可以和数值对应的,那样,我可以把表达式里面的参数用数值替换掉,然后再用datatable.Compute直接计算。