私が持っていると言う
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);
}
それは私にとってはうまくいきます。将来の読者が気に入ってくれることを願っています。