Math.sin(75 * (180/3.14)); -> 0.9956310419973837
Math.sin(75 * (180/Math.PI)); -> -0.4927842805101025
以上是从acrobat中的js调试器复制的。我不明白为什么。第一个值(.995 ....)是正确的。任何帮助/解释将不胜感激。
答案 0 :(得分:2)
您的问题是规模与精确度相结合。 75 * 180约为13,500,这就是你的pi近似值。在这种规模下,即使很小的乘法变化也会导致范围的巨大差异。再加上你使用pi(3.14)的粗略近似与更精确的近似(Math.PI
)的事实,在这一点上给你很多变化。在Wolfram Alpha上尝试这两种计算,您将看到JavaScript提供了一致且正确的答案。
正弦函数将返回与正弦函数的y值对应的结果。因此,在这个尺度上,一个非常小的乘法误差(Math.PI - 3.14
)将被放大。考虑:
1 * (Math.PI - 3.14) = 0.0015926535897929917
13500 * (Math.PI - 3.14) = 21.50082346220539
(这不是错误的完整计算,只是一个重要的演示。)
这表明,大约1,3.14和Math.PI
之间的差异并没有真正向你移动那么远(0.00159弧度或0.09度)。大约4298,它移动你21.5弧度(或1231.9度),这给你一个完全不同的正弦波位置!