我在使用Math#atan2
时发现Firefox和Safari在输出的最后一个数字上有所不同。
我的代码:
Math.atan2(-0.49999999999999994, 0.8660254037844387)
Safari (12.1.1)返回-0.5235987755982988
,但Firefox(Mac/67.0)返回-0.5235987755982987
。
当然,这只是一个微小的差异。然而,似乎所有实现都应该在所有输入上产生相同的输出。例如,像这样的差异可能导致if
语句根据浏览器而不同地跟随不同的路径。
我看到的内容是否违反了ECMAScript规范的任何版本?
1 + '2'
返回"12"
,但对于1 - '2'
返回-1
没有问题。如果你的代码需要atan2
的1e-16
精度,你应该准备好面对奇怪的 bug。 - Eric DuminilMath.atan2(Infinity, 2)
和更根本的Math.PI/2
也存在差异,这可能指向底层实现的不同。 - James