如何使用AS3评估数学公式?
没什么好看的,比如(10/3)*4+10
。
感谢。
答案 0 :(得分:9)
虽然您可以使用像D.eval或AS3Eval这样的大型评估库,但您真正需要的就是这样简单的MathParser(More info about the 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]);
}
}
}
答案 1 :(得分:4)
我相信D.eval API正是您所寻找的。 p>
答案 2 :(得分:1)
如果您想避免使用库,可以尝试使用ExternalInterface.call
访问Javascript的eval函数。
例如:
var formula:String = '1+1';
var result:* = ExternalInterface.call('eval', formula);
您可能需要检查result == 'undefined'
是否表示公式语法中存在错误。