4

如何使用 AS3 评估数学公式?没有什么花哨的东西,比如(10/3)*4+10

谢谢。

4

3 回答 3

9

虽然您可以使用像D.evalAS3Eval这样的大型 eval 库,但您真正需要的只是这个简单 的MathParser(有关 MathParser的更多信息

以下是您使用 MathParser 的方法:

package {
    import bkde.as3.parsers.*;
    import flash.display.Sprite;
    public class MathTest extends Sprite {
        public function MathTest() {
            var parser:MathParser = new MathParser([]);
            var compiledObj:CompiledObject = parser.doCompile("(10/3)*4+10");
            var answer:Number = parser.doEval(compiledObj.PolishArray, []);

            // EDIT: In case you wanted variables
            var xyParser:MathParser = new MathParser(["x", "y"]);
            var xyCompiledObj:CompiledObject = xyParser.doCompile("(x/3)*y+10");
            var xyAnswer:Number = xyParser.doEval(xyCompiledObj.PolishArray, [10, 4]);
        }

    }

}
于 2012-07-12T21:18:12.533 回答
4

我相信D.eval API是您正在寻找的。

于 2012-07-12T21:24:09.807 回答
1

如果您想避免使用库,可以尝试使用ExternalInterface.call来访问 Javascript 的 eval 函数。

例如:

var formula:String = '1+1';
var result:* = ExternalInterface.call('eval', formula);

您可能需要检查result == 'undefined'这是否表示公式语法中的错误。

于 2012-07-12T21:31:17.240 回答