说我有
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 位;它是0.00000000000000012246
。
如果这是问题,您只需要格式化显示的数字。
如上所述,这不是错误,只是计算机浮点运算的近似值。
为了得到预期的答案,因为 sin() & cos() 介于 -1, 0 , +1 之间,请尝试将其加 1 到所需的精度并减去 1。
x = round15(Math.sin(toRad(angle))+1)-1;
其中定义了 round15
public double round15(double x){
DecimalFormat twoDForm = new DecimalFormat("0.##############E0");
String str = twoDForm.format(x);
return Double.valueOf(str);
}
它对我有用,希望未来的读者喜欢它。