为什么Math.cos(90*Math.PI/180)得到6.123031769111 ......而不是零?

Sea*_*ean 19 javascript math geometry trigonometry

我将度数转换为弧度(度*Math.PI/180),但为什么会出现以下情况:

Math.cos(90 * Math.PI/180)
Run Code Online (Sandbox Code Playgroud)

产量6.123031769111 ......而不是零?

我正在尝试使用矩阵执行2D旋转,结果完全没有问题.

tem*_*def 35

的输出

Math.cos(90 * Math.PI/180)
Run Code Online (Sandbox Code Playgroud)

6.123031769111886e-17
Run Code Online (Sandbox Code Playgroud)

注意e-17最后,这意味着这个数字是6.123 x 10 -17.这是一个非常接近于0的数字,它实际上是0.它不同于0的原因是由于IEEE-754双格式中的舍入误差导致您无法获得π/ 2的精确表示并导致分钟舍入错误在余弦的计算中.

顺便说一下 - 当结果从6开始回来时我也很惊讶!只有在我看到最后才开始有意义的事情之后.

希望这可以帮助!

  • 以及`Math.PI!=π`的事实. (7认同)
  • +1.也许添加像Math.cos(90*Math.PI/180).toFixed(15)`这样的简单解决方案? (3认同)