一段很简单的计算公式代码:
string str = "(a-b)*12+c-d";//与此字符串相对应的是一个数组:3,4,5,6
str = str.Replace("a", a.ToString());
str = str.Replace("b", b.ToString());
str = str.Replace("c", c.ToString());
str = str.Replace("d", d.ToString());
//转换出来的公式为:
//(3-4)*12+5-6
double dd = Convert.ToDouble(str); //这句报错,怎么才能取到计算的结果呢?
对不起,时间太紧,思维乱了,上来提个问,谢谢
string str = "(a-b)*12+c-d";//与此字符串相对应的是一个数组:3,4,5,6
str = str.Replace("a", a.ToString());
str = str.Replace("b", b.ToString());
str = str.Replace("c", c.ToString());
str = str.Replace("d", d.ToString());
//转换出来的公式为:
//(3-4)*12+5-6
double dd = Convert.ToDouble(str); //这句报错,怎么才能取到计算的结果呢?
对不起,时间太紧,思维乱了,上来提个问,谢谢
http://topic.csdn.net/u/20081014/22/b23d60b2-0556-4512-8fac-c0302cb3d628.html
利用DataTable和DataColumn来做,把DataColumn的expression定义为你的计算公司,把你的变量定义为其他字段,就可以得出值来还有一个办法就是到数据库去执行,拼成一个sql语句
string str = "(a-b)*12+c-d";//与此字符串相对应的是一个数组:3,4,5,6
str = str.Replace("a", a.ToString());
str = str.Replace("b", b.ToString());
str = str.Replace("c", c.ToString());
str = str.Replace("d", d.ToString());
//转换出来的公式为:
//(3-4)*12+5-6
string sql = "select " + str;//到数据库执行sql
最简单的方法是 借用dataTable以后net4出来就方便点了,可以使用动态语言特性了
private string ComputeField(sting[] Items, string strFormula)
{
string[] Item = null;
strFormula.Replace(Item[0].ToString(), Item[1].ToString());
MessageBox.Show(strFormula);
return strFormula;
}
string[] ss=new string[2];
ss[0]="101";
ss[1]="20";
string s=ComputeField(ss, "101+102") //为什么没有替换呢?
{
string[] Item = null;
strFormula.Replace(Item[0].ToString(), Item[1].ToString());
MessageBox.Show(strFormula);
return strFormula;
}
把红色的改成
strFormula = strFormula.Replace(Item[0].ToString(), Item[1].ToString());
{
string[] Item = null;
strFormula=strFormula.Replace(Item[0].ToString(), Item[1].ToString());
MessageBox.Show(strFormula);
return strFormula;
}
如果是数字计算
干嘛用string 直接数值就好了嘛double dd = (a-b)*12+c-d * 1.0;a如果是string 的话int inta = Convert.ToInt32(a);