我在使用 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/