-2

私が持っていると言う

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

何か案は?ありがとう!

4

2 に答える 2

9

1.2246467991473532E-16 事実上ゼロで、小数点以下 16 桁までです。です0.00000000000000012246

問題がある場合は、表示用に数値をフォーマットするだけです。

于 2012-08-03T13:25:02.130 に答える
0

前述のように、これはエラーではなく、コンピューターの浮動小数点演算の近似にすぎません。

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);
}

それは私にとってはうまくいきます。将来の読者が気に入ってくれることを願っています。

于 2013-06-26T08:28:00.587 に答える