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

use*_*679 0 java math trigonometry angle

我的Math.cos()方法有点问题.我知道,我必须在使用之前将角度转换为Radians Math.cos().但如果我这样做:

System.out.println(Math.cos(Math.toRadians(90));
Run Code Online (Sandbox Code Playgroud)

输出:6.123233995736766E-17

Math.sin() 运作良好.

Aki*_*nen 8

从三角学:

sin x ~= x, for small values of x
sin x = cos x+pi/2
Run Code Online (Sandbox Code Playgroud)

因为pi/2不能在IEEE-754浮点中精确表示,这意味着它必须偏离某个值x,即它由pi/2 + - x表示,其中x <最低有效位浮点系统.在这种情况下,2 ^ -53 = 1.1102e-16.

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