Я пытаюсь создать всеобъемлющий калькулятор, но у меня возникает проблема. Пока я пытаюсь найти недостающий угол с помощью закона косинусов, я не получаю того же ответа, что и мой калькулятор.
double answer = 0;
else if (solver == 2 && choice == 2)
{
System.out.println("Enter side length opposite of wanted angle: ");
double c = in.nextDouble();
System.out.println("Enter known side #2: ");
double b = in.nextDouble();
System.out.println("Enter known side #3: ");
double a = in.nextDouble();
answer = (Math.pow(c, 2) - Math.pow(b,2) - Math.pow(a,2)) / (-2 * (a * b));
answer = Math.acos(answer);
System.out.println("Answer: " + answer);
}
Без «answer = Math.acos (answer);» я получаю правильный ответ, необходимый перед последним шагом, но тогда мне понадобится арккосинус этого ответа. Я не понимаю правильного ответа. Кто-нибудь понимает почему?
двойной. И, как говорится в вопросе, в градусах.
По мере того, как знаменатель становится большим, ваши вычисления будут стремиться к нулю, потому что ваш тип данных имеет только такое количество бит, которое он может использовать, чтобы A. представлять себя, а B. выполнять вычисления в двоичном формате.
Ах, я пропустил подпись. Мои извинения. Math.acos() ожидает радианы и возвращает радианы. загляните в Math.toDegrees () и Math.toRadians ()
Я также попробовал Math.toDegrees () и получил NaN, toRadians дает неправильный ответ.
Вопросы, требующие помощи по отладке («почему этот код не работает?»), Должны включать в себя желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для их воспроизведения в самом вопросе. Вопросы без четкой постановки проблемы не будут полезны другим читателям. См .: Как создать минимальный воспроизводимый пример. Используйте ссылку редактировать, чтобы улучшить свой вопрос - не добавляйте дополнительную информацию через комментарии. Спасибо!
Не редактируйте вопрос и не меняйте код решения. У вас есть ответ ниже с решением. Щелкните галочку рядом с ним, чтобы принять это решение. Возврат вопроса к удалению решения.




Это дает мне правильный результат, обратите внимание на добавление Math.toDegrees ():
double answer = (Math.pow(c, 2) - Math.pow(b,2) - Math.pow(a,2)) / (-2 * (a * b));
answer = Math.acos(answer);
System.out.println("Answer: " + Math.toDegrees(answer));
Спасибо, разобрался. Я почему-то был в тупике около 2 часов. Я пытался включить Math.toDegrees в acos. Т.е. Math.acos (Math.toDegrees (ответ));
Какой тип переменной
answer? также какого вы ожидаете ответа, в градусах или радианах?