-3

以下は両方のクラスのコードです。ユーザーは 2 つの角度の値と三角形の一部の長さを入力する必要があります。Javaがラジアンを使用していることは理解していますが、単純な変換でも、それを使用Math.toDegrees or * 180/Math.Piしても間違った答えが得られます。たとえば、角度 30 を入力すると、100 * tan(30)度は 57.1 になるはずですが、44.92 になります.... コード:

/**Class to implement math methods, and math import
 * 
 */

/**
 * @author Oli
 *
 */

public class Balloon {

    //Attributes

    private int angle1;
    private int angle2;
    private double distance1;
    private int time;
    private double h2;

    //Consttructor

    public Balloon (int ang1, int ang2, double dist1, int t1){
        angle1 = ang1; angle2 = ang2; distance1 = dist1; time = t1;
}


    //Methods to calculate angles, distances and time


    public double height1(){
        double h1;


        h1 = distance1 * (Math.tan(angle1*180/Math.PI));
        return h1;
    }

    public double   height2(){
        double h2;

        h2 = distance1 * (Math.tan(angle2))-(Math.tan(angle1));
        return h2;
    }

    public double speed(){
        double sp1;

        sp1 = h2/time;
        return sp1;
    }

    public double BalloonDistance(){
        double BD1;

        BD1 = distance1 / (Math.cos(angle2));
        return BD1;

    }

    }
4

6 に答える 6

2

一貫性を保ち、メンバーにはラジアンを使用してください。

とにかく、組み込み関数を使用して変換を行う必要があります。

double deg = 30;
double tan = Math.tan(Math.toRadians(deg));
System.out.println("Tan: " + tan);
System.out.println("ATan: " + Math.toDegrees(Math.atan(tan)));

印刷します (デモ)

Tan: 0.5773502691896257
ATan: 29.999999999999996
于 2014-07-15T19:42:10.763 に答える
1

Javaがラジアンを使用していることは理解していますが、Math.toDegreesまたは* 180/Math.Piを使用した単純な変換でも、間違った答えが得られます。

ラジアンへの変換が間違っています。

  • するangle/180*pi、しない angle*180/pi
  • または使用toRadiansない toDegreesでください。

tanまた、一部の計算ではまったく変換しないことに注意してください...

于 2014-07-15T19:34:55.843 に答える
0

度数の会話 (180/Math.Pi) にラジアンを使用します。ただし、ラジアン会話の程度が必要です。

ラジアン

次に、次のようなユーティリティ関数を実装することをお勧めします

public int degreeToRadian(int degree)
{
   return degree * (Math.pi / 180);
}

Math#tan次数の値にはこのように使用する必要があります

Math.tan(degreeToRadian(angle));

上記の代わりにMath#toRadiansを使用することもできます。

ドクから;

public static double tan(double a) 角度の三角タンジェントを返します。特殊なケース: 引数が NaN または無限大の場合、結果は NaN になります。引数がゼロの場合、結果は引数と同じ符号を持つゼロになります。計算結果は、正確な結果の 1 ulp 以内でなければなりません。結果は半単調でなければなりません。

パラメータ: a - ラジアン単位の角度。戻り値: 引数のタンジェント。

こちらもご覧ください

ラジアン

于 2014-07-15T19:34:24.820 に答える
0

代わりに、変換に Math.toRadians(int degree) を使用できます

于 2014-07-15T19:36:51.147 に答える