最近使用到單元格中計算公式,現在和大家分享一下我的解決方案。希望對大家有所幫助。
先說一下我的解決思路:
首先、將整個字符分進行分解並保存在數組中,在使用遞歸方法對每個數組元素再次生成新的數組,逐層計算,最後計算出相應的數值;
第二、數組分解順序(+或-),然後是(*或/);
第三、分解使用的split()進行分解。
關鍵代碼:
private void CalCellValueNew(_value)
{
double result = 0.0;
if (_value != "")
{
if (_value.IndexOf("+") > -1) //這裏只寫了一個加法,減法相同。
{
ArrayList = _value.Split('+');
for (int i = 0; i < ArrayList.Length; i++)
{
if (ArrayList[i] != "")
{
ArrayList[i] = CalCellValueNew(ArrayList[i]);
FirstPackMeter += Convert.ToDouble(ArrayList[i]);
}
else
FirstPackMeter += 0;
}
}
}
}
需要注意的是如果是減法,乘法和除法,需要注意首項賦值。
希望對你有幫助!