Как написать программу, которая проверяет, что значение sin ^ 2 (θ) + cos ^ 2 (θ)? [Дубликат]

1

Я выполняю домашнюю работу по программированию на Java и нуждаюсь в помощи с объяснением по следующему вопросу: Напишите программу, которая использует Math.sin() и Math.cos() чтобы проверить, что значение
sin 2 θ + cos 2 θ приблизительно равно 1 для любого θ, введенного в качестве аргумента командной строки. Просто распечатайте значение. Почему значения не всегда равны 1?

  • 2
    Почему бы вам не попробовать и посмотреть ?
  • 3
    Значения не точно равны 1, потому что числа на компьютере обычно хранятся не точно, а в ограниченном пространстве. Посмотрите на en.wikipedia.org/wiki/IEEE_floating_point и docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
Показать ещё 5 комментариев
Теги:

1 ответ

4

Правило № 1:

Не сравнивайте числа с плавающей запятой с равенством (==). Лучшим способом проверки равенства в плавающих числах является определение некоторого порога, приближающегося к ZERO, и сравнение разницы между двумя числами с этим порогом

В вашем случае ваш целевой номер равен 1, и результатом может быть, например, 0.999998

double threshold = 0.00001; // 1e-5
double target = 1;
double result = 0.999998; 

System.out.println(Math.abs(target - result) < threshold); // prints true
  • 1
    Не около нуля обязательно, это зависит от диапазона значений и является более сложным.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню