Javascript 为什么Math.cos(90*Math.PI/180)产生6.123031769111。。。而不是零?

Javascript 为什么Math.cos(90*Math.PI/180)产生6.123031769111。。。而不是零?,javascript,math,geometry,trigonometry,Javascript,Math,Geometry,Trigonometry,我将度转换为弧度(degrees*Math.PI/180),但为什么会出现以下情况: Math.cos(90 * Math.PI/180) 收益率6.123031769111。。。而不是零 我尝试使用矩阵执行二维旋转,结果完全不正常。的输出 Math.cos(90 * Math.PI/180) 是 注意末尾的e-17,这意味着这个数字是6.123 x 10-17。这是一个非常接近0的数字,实际上是0。它不等于0的原因是由于IEEE-754双精度格式中的舍入误差,这使您无法获得π/2的精确表示

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

Math.cos(90 * Math.PI/180)
收益率6.123031769111。。。而不是零

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

的输出

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

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

顺便说一句,当结果以6开头时,我也很惊讶!直到我看到最后一刻,事情才有了意义


希望这有帮助

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

6.123233995736766e-17

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

您应该显示更多代码,以便我们可以看到一些上下文。@Gabe-实际上,上面的代码已经足够了。试着在JS控制台中输入它,你会得到上面显示的结果π+1。可能会添加类似于
Math.cos(90*Math.PI/180).toFixed(15)
的内容作为简单的解决方案?
(Math.cos(90*Math.PI/180)| 0)==0
6.123233995736766e-17