1

我已经看到了一些答案,但我仍然没有找到适合我的答案。当我尝试这个时:

return Math.cos(270.* Math.PI/180); 

我明白了

-1.8369701987210297E-16

尽管: -

Math.cos(Math.toRadians(270.) // gives:-1.8369701987210297E-16

我期待这给0。

4

3 回答 3

5

数字-1.8369701987210297E-16是一个非常接近于零的数字的科学表示。它相当于这个数字:

-0.000000000000000018369701987210297

浮点运算并不精确。您应该期待小的表示错误。特别是不可能将像 pi 这样的无理数完全表示为浮点数。

于 2012-12-23T14:11:13.970 回答
1

Math.PI是一个近似值,因此您将得到 的近似值zero

epsilon尝试使用值近似的误差范围1E-16。因此,如果 cos 结果低于 epsilon,则意味着它为空。

您还可以开发自己的修改cos功能。

于 2012-12-23T14:12:46.433 回答
0

在浮点数的情况下,另一个不完美精度的例子。你转换它,它会导致一个不完美的 0 值。然而,它非常接近于零。

它与大值无关。如果是浮点数,请始终期待细微的差异。

于 2012-12-23T14:11:55.843 回答