我的合作伙伴和我正在研究一种确定性的物理引擎,它将在各种平台上运行完全相同。为了做这样的事情,我们使用固定点或截断浮点数学(我们稍后会弄清楚)。但是,为了将引擎移植到Javascript,我们必须确保我们将使用的Javascript中的双精度浮点运算与我们将在桌面端口中使用的任何操作一致。
考虑到这一点,我的问题是:如何在Javascript中实现Math.sqrt()?如果跨浏览器有不同的实现,那些实现是什么?或者,如果前面的问题没有确定的答案,那么Math.sqrt()可以产生的最大错误量是多少?
我们不想编写自己的平方根函数,因为本机实现的Math.sqrt()将始终优于我们在Javascript中编写的任何内容。
答案 0 :(得分:1)
ECMA-262(ECMAScript 5.1规范)不要求Math.sqrt
的特定实现,只需要针对异常数字值(NaN
,-0
等)的特定结果:
15.8.2.17 sqrt(x)
返回x的平方根的依赖于实现的近似值。
- 如果x是NaN,则结果为NaN。
- 如果x小于0,则结果为NaN。
- 如果x为+0,则结果为+0。
- 如果x为-0,则结果为-0。
- 如果x为+ Infinity,则结果为+ Infinity。