strExpression.IndexOf("/")!=-1)
{
if (strExpression.IndexOf("*")!=-1)
{
strTemp=strExpression.Substring(strExpression.IndexOf("*")+1,strExpression.Length-strExpression.IndexOf("*")-1);
strTempB=strExpression.Substring(0,strExpression.IndexOf("*"));
strOne=strTempB.Substring(GetPrivorPos(strTempB)+1,strTempB.Length-GetPrivorPos(strTempB)-1);
strTwo=strTemp.Substring(0,GetNextPos(strTemp));
ReplaceValue=Convert.ToDouble(GetExpType(strOne))*Convert.ToDouble(GetExpType(strTwo));
strExpression=strExpression.Replace(strOne+"*"+strTwo,ReplaceValue.ToString());
}
else if (strExpression.IndexOf("/")!=-1)
{
strTemp=strExpression.Substring(strExpression.IndexOf("/")+1,strExpression.Length-strExpression.IndexOf("/")-1);
strTempB=strExpression.Substring(0,strExpression.IndexOf("/"));
strOne=strTempB.Substring(GetPrivorPos(strTempB)+1,strTempB.Length-GetPrivorPos(strTempB)-1);
strTwo=strTemp.Substring(0,GetNextPos(strTemp));
ReplaceValue=Convert.ToDouble(GetExpType(strOne))/Convert.ToDouble(GetExpType(strTwo));
strExpression=strExpression.Replace(strOne+"/"+strTwo,ReplaceValue.ToString());
}
else if (strExpression.IndexOf("+")!=-1)
{
strTemp=strExpression.Substring(strExpression.IndexOf("+")+1,strExpression.Length-strExpression.IndexOf("+")-1);
strTempB=strExpression.Substring(0,strExpression.IndexOf("+"));
strOne=strTempB.Substring(GetPrivorPos(strTempB)+1,strTempB.Length-GetPrivorPos(strTempB)-1);
strTwo=strTemp.Substring(0,GetNextPos(strTemp));
ReplaceValue=Convert.ToDouble(GetExpType(strOne))+Convert.ToDouble(GetExpType(strTwo));
strExpression=strExpression.Replace(strOne+"+"+strTwo,ReplaceValue.ToString());
}
else if (strExpression.IndexOf("-")!=-1)
{
strTemp=strExpression.Substring(strExpression.IndexOf("-")+1,strExpression.Length-strExpression.IndexOf("-")-1);
strTempB=strExpression.Substring(0,strExpression.IndexOf("-"));
strOne=strTempB.Substring(GetPrivorPos(strTempB)+1,strTempB.Length-GetPrivorPos(strTempB)-1);
strTwo=strTemp.Substring(0,GetNextPos(strTemp));
ReplaceValue=Convert.ToDouble(GetExpType(strOne))-Convert.ToDouble(GetExpType(strTwo));
strExpression=strExpression.Replace(strOne+"-"+strTwo,ReplaceValue.ToString());
}
}
return Convert.ToDouble(strExpression);
}
private double CalculateExExpress(string strExpression,EnumExpress ExpressType)
{
double retValue=0;
switch(ExpressType)
{
case EnumExpress.Sin:
retValue=Math.Sin(Convert.ToDouble(strExpression));
break;
case EnumExpress.Cos:
retValue= Math.Cos(Convert.ToDouble(strExpression));
break;
case EnumExpress.Tan:
retValue= Math.Tan(Convert.ToDouble(strExpression));
break;
case EnumExpress.ATan:
retValue= Math.Atan(Convert.ToDouble(strExpression));
break;
case EnumExpress.Sqrt:
retValue= Math.Sqrt(Convert.ToDouble(strExpression));
break;
case EnumExpress.Pow:
retValue= Math.Pow(Convert.ToDouble(strExpression),2);
break;
}
if (retValue==0) return Convert.ToDouble(strExpression);
return retValue;
}
private int GetNextPos(string strExpression)
{
int[] ExpPos=new int[4];
ExpPos[0]=strExpression.IndexOf("+");
ExpPos[1]=strExpression.IndexOf("-");
ExpPos[2]=strExpression.IndexOf("*");
ExpPos[3]=strExpression.IndexOf("/");
int tmpMin=strExpression.Length;
for (int count=1;count<=ExpPos.Length;count++)
{
if (tmpMin>ExpPos[count-1] && ExpPos[count-1]!=-1)
{
tmpMin=ExpPos[count-1];
}
}
return tmpMin;
}
private int GetPrivorPos(string strExpression)
{
int[] ExpPos=new int[4];
ExpPos[0]=strExpression.LastIndexOf("+");
ExpPos[1]=strExpression.LastIndexOf("-");
ExpPos[2]=strExpression.LastIndexOf("*");
ExpPos[3]=strExpression.LastIndexOf("/");
int tmpMax=-1;
for (int count=1;count<=ExpPos.Length;count++)
{
if (tmpMax<ExpPos[count-1] && ExpPos[count-1]!=-1)
{
tmpMax=ExpPos[count-1];
}
}
return tmpMax;
}
public string SpiltExpression(string strExpression)
{
string strTemp="";
string strExp="";
while (strExpression.IndexOf("(")!=-1)
{
strTemp=strExpression.Substring(strExpression.LastIndexOf("(")+1,strExpression.Length-strExpression.LastIndexOf("(")-1);
strExp=strTemp.Substring(0,strTemp.IndexOf(")"));
strExpression=strExpression.Replace("("+strExp+")",CalculateExpress(strExp).ToString());
}
if(strExpression.IndexOf("+")!=-1 (北联网教程,专业提供视频软件下载)
……