Java Math.cos对于较大的值给出错误的结果

Java Math.cos对于较大的值给出错误的结果,java,Java,我已经看到了一些答案,但我仍然没有找到一个适合我的。当我尝试这个: return Math.cos(270.* Math.PI/180); 我明白了 而:- Math.cos(Math.toRadians(270.) // gives:-1.8369701987210297E-16 我本以为这会是0 数字-1.8369701987210297E-16是一个非常接近零的数字。它相当于这个数字: -0.000000000000000018369701987210297 浮点运算不精确。您应该

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

return Math.cos(270.* Math.PI/180); 
我明白了

而:-

Math.cos(Math.toRadians(270.) // gives:-1.8369701987210297E-16
我本以为这会是0

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

-0.000000000000000018369701987210297
浮点运算不精确。您应该期望出现小的表示错误。特别是,不可能将类似的pi精确地表示为浮点数。

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

-0.000000000000000018369701987210297

浮点运算不精确。您应该期望出现小的表示错误。特别是,不可能将类似的pi精确地表示为浮点数。

另一个浮点数精度不理想的例子。如果对其进行转换,则会产生一个不完美的0值。然而,它非常接近于零


它与大值无关。对于浮点数,总是希望有微小的差异。

另一个浮点数精度不完美的例子。如果对其进行转换,则会产生一个不完美的0值。然而,它非常接近于零

它与大值无关。对于浮点数,始终希望有微小的差异。

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

尝试使用误差范围ε,其值约为1E-16。 所以,如果cos结果不如epsilon,这意味着它是空的

您还可以开发自己的修改cos函数

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

尝试使用误差范围ε,其值约为1E-16。 所以,如果cos结果不如epsilon,这意味着它是空的


您还可以开发自己的修改cos函数

这是因为浮点参数。这是因为浮点参数。