Java Math.cos(Math.toRadians(<angle>)) 返回奇怪的值

标签 java math angle trigonometry

我在使用 Math.cos() 方法时遇到了一些问题。我知道,在使用 Math.cos() 之前我必须将角度转换为弧度。但如果我这样做:

System.out.println(Math.cos(Math.toRadians(90));

输出:6.123233995736766E-17

Math.sin() 运行良好。

最佳答案

根据三角函数:

sin x ~= x, for small values of x
sin x = cos x+pi/2

因为 pi/2 无法在 IEEE-754 float 中精确表示,这意味着它必须偏离某个值 x,即它由 pi/2 +- x 表示,其中 x < 最小值浮点系统中的重要位。在本例中为 2^-53 = 1.1102e-16。

在此特定情况下,x ~= 6.123233995736766E-17,约为最大误差的 55%。 所以,这是一个相当不错的结果......

关于Java Math.cos(Math.toRadians(<angle>)) 返回奇怪的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13100144/

相关文章:

c# - Unity 上的虚线弹跳

java - 将相机旋转到一个点

Java Vector3 计算两个 vector 之间的角度

java - 如何对两个不同的游标列表进行排序?

Java Swing JSplitPane 未按预期显示

c# - 计算 BigInteger 的平方

c# - 数学计算来检索两点之间的角度?

python - 有向线段之间的符号角

java - 在 Kotlin 中 Autowiring

java - 全局对象的成员变量也应该设为全局吗?