Как я могу правильно округлить это число? - PullRequest
0 голосов
/ 06 октября 2019

Я должен получить косинус и грех PI и PI / 2 и угол 0. Все мои числа были правильными, за исключением косинуса PI / 2.

Ожидаемый результат:

Radians: (cos, sin)
0.0: 1.0, 0.0
1.5707963267948966: 0.0, 1.0
3.141592653589793: -1.0, 0.0

Мой вывод:

Radians: (cos, sin)
0.0: 1.0, 0.0
1.5707963267948966: 1.0, 1.0
3.141592653589793: -1.0, 0.0

public class UnitCircle 
{
    public static void main(String[] args)
    {
        System.out.println("Radians: (cos, sin)");

        double angle = 0.0;
        double piDivideTwo = Math.PI/2.0;
        double pi = Math.PI;

        System.out.println(angle + ": " + Math.cos(angle) + ", " + Math.sin(angle) );


        double cosine = Math.cos(piDivideTwo); 
        cosine = Math.round(cosine * 100) / 100.0;

        System.out.println(piDivideTwo + ": " + Math.cos(cosine) + ", " + Math.sin(piDivideTwo) );

        double sin = Math.sin(pi);
        sin = Math.round(sin *100) / 100.0;

        System.out.println(pi + ": " + Math.cos(pi) + ", " + Math.sin(sin) );
    }
}

1 Ответ

1 голос
/ 06 октября 2019

Причина, по которой кажется, что он работает дважды cos или sin, заключается в том, что он имеет значение 0


Вам просто нужно вычислить один раз cos,sin и затем напечататьс форматом, потому что PI / 2 и PI не могут быть идеальным значением

static void cosSin(double angle) {
    double cos = Math.cos(angle);
    double sin = Math.sin(angle);
    System.out.printf("%.4f : %.1f %.1f \n", angle, cos, sin);
}

public static void main(String[] args) {
    System.out.println("Radians: (cos, sin)");
    double angle = 0.0;
    double piDivideTwo = Math.PI / 2.0;
    double pi = Math.PI;
    cosSin(angle);        // 0,0000 :  1,0 0,0
    cosSin(piDivideTwo);  // 1,5708 :  0,0 1,0
    cosSin(pi);           // 3,1416 : -1,0 0,0
}
...