关于javascript:为什么math.cos(90*math.pi/180)生成6.123031769111…而不是零?

Why does Math.cos(90 * Math.PI/180) yield 6.123031769111… and not zero?

本问题已经有最佳答案,请猛点这里访问。

我把度数转换成弧度(degrees*math.pi/180),但为什么要这样做:

1
Math.cos(90 * Math.PI/180)

产量6.123031769111…而不是零?

我正在尝试使用矩阵执行二维旋转,结果完全不正常。


产量

1
Math.cos(90 * Math.PI/180)

1
6.123031769111886e-17

注意末尾的e-17,这意味着这个数字是6.123 x 10-17。这是一个非常接近0的数字,实际上是0。它不相同的原因是由于IEEE-754双格式的舍入错误,这会阻止您获得π/2的精确表示,并在计算余弦时导致微小的舍入错误。

顺便说一句,当结果从6开始回来的时候,我也很惊讶!只有当我看到最后一刻,事情才开始有意义。

希望这有帮助!


1
6.123233995736766e-17

是一个非常小的数字的科学符号,接近于零。由于舍入误差等原因,它不完全为零。


6.123233995736766E-17非常接近于零。把数字四舍五入。