Sin/Cos无法在java/android中工作



假设我有

Log.e("deg: "+dd,  "X:"+ Math.sin( Math.toRadians(dd) ) +"| Y:"+Math.cos( Math.toRadians(dd) ) );

如果dd=180,那么sin应该是0,cos-1,对吗?但它输出

度:180 X:1.2246467991473532E-16 | Y:-1.0

有什么想法吗?谢谢

1.2246467991473532E-16实际上为零,小数点后16位;它是CCD_ 2。

如果有问题的话,你只需要格式化数字就可以显示了。

如上所述,这不是一个错误,只是计算机浮点运算的近似值。

为了得到预期的答案,如sin()&cos()在-1、0、+1之间,尝试将其四舍五入加1到所需的精度,然后减去1。

x = round15(Math.sin(toRad(angle))+1)-1;

其中圆形15定义为

public double round15(double x){
    DecimalFormat twoDForm = new DecimalFormat("0.##############E0");
    String str = twoDForm.format(x);
    return Double.valueOf(str);
}

它对我有用,希望未来的读者喜欢它。

最新更新