我正在开发一个将JavaScript源代码转换为目标语言的翻译器。我正在尝试用目标语言实现JavaScript的Math对象。
如果有"Math"对象的JavaScript实现,我可以使用翻译器获得目标语言中的等效代码。
我正在寻找这样的东西:
var Math = {
pow: function(...) {...}
exp: function(...) {...}
/* other methods of Math */
}
是否有这样的实施?这将帮助我避免用目标语言手动编写Math对象的代码。
math.js的V8实现可能会为您提供一些指导,但当然,它充满了用于本机函数调用的占位符。您必须能够用目标语言中适当的基于库的标准函数调用来替换%Math_floor(x)
之类的东西。
http://code.google.com/p/v8/source/browse/branches/bleeding_edge/src/math.js?spec=svn10758&r=10758
这来自官方ecmascript-262规范:
注意函数acos、asin、atan、atan2、cos、exp的行为,这里没有精确指定log、pow、sin、sqrt和tan,除了对于表示感兴趣的边界情况。对于其他参数值函数旨在计算熟悉的数学函数,但在近似算法的选择。总体意图是实现者应该能够使用相同的数学库给定硬件平台上可供C使用的ECMAScript该平台上的程序员。
尽管算法的选择由实现决定,建议(但未由指定该标准),实现使用近似算法对于fdlibm中包含的IEEE 754算法Sun Microsystems的数学库(http://www.netlib.org/fdlibm)。
您需要的对象是:
Math.exp(x) // Returns the value of Ex
Math.pow(x,y) // Returns the value of x to the power of y
除此之外,还有更多可以帮助您的java。这些是
Math.PI // returns PI
Math.random(); // returns a random number
Math.max(0, 150, 30, 20, -8, -200); // returns 150
Math.min(0, 150, 30, 20, -8, -200); // returns -200
Math.round(4.7); // returns 5
Math.round(4.4); // returns 4