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函数 这是因为浮点参数。这是因为浮点参数。