1

Visual Studio Web Developer (Asp C#) でフォーム ベースの電卓を作成する必要があります。クリックしたボタンの値を表示するテキスト ボックスがあります (+、-、​​/、* を含む)...

可能であれば、そのテキストボックスの文字列値を計算したい...

編集:JSには eval(stringholdername); を使用してこれを行う非常に簡単な方法があることを知っています。しかし、ASP C# ではこれに相当するものを見つけることができないようです

4

2 に答える 2

0

次のような単純な再帰的方法を使用できます。

    public int Calculate(string expression)
    {
        int result = 0;
        string[] expressions = expression.Split('+');
        if (expressions.Length > 1)
        {
            result = 0;
            foreach (string expr in expressions)
                result += Calculate(expr);
            return result;
        }
        expressions = expression.Split('-');
        if (expressions.Length > 1)
        {
            result = Calculate(expressions[0]);
            for (int i = 1; i < expressions.Length; i++)
                result -= Calculate(expressions[i]);
            return result;
        }
        expressions = expression.Split('*');
        if (expressions.Length > 1)
        {
            result = 1;
            foreach (string expr in expressions)
                result *= Calculate(expr);
            return result;
        }
        expressions = expression.Split('/');
        if (expressions.Length > 1)
        {
            result = Calculate(expressions[0]);
            for (int i = 1; i < expressions.Length; i++)
                result /= Calculate(expressions[i]);
            return result;
        }

        if (!int.TryParse(expression, out result))
            throw new ArgumentException("Expression was not nummeric", "expression");

        return result;
    }

非常にシンプルで、( と ) と負の数をサポートせず、+、-、*、/ のみをサポートします。

次のように使用します。

int result = Calculate("20*10+200/100");

あなたの探求を頑張ってください。

于 2013-03-14T18:25:17.553 に答える
0

NCalcを調べてください。これはオープン ソースの数式評価ツールです。

于 2013-03-14T17:37:33.377 に答える