У меня есть программа, предназначенная для тестирования различных экземпляров боковых углов, но я получаю предупреждение, которое, как мне кажется, может испортить мою программу.
По сути, у меня естьдва оператора if
if (sideA == sideB * sin(angA))
и
else if (sideB > sideA && sideA > sideB * sin(angA))
Где sideA, sideB и angA - все двойные числа, а angA вводится в градусах и переводится в радианы с помощью уравнения angA = angA *3.14159 / 180.
У меня проблема в том, что моя программа читает последнее утверждение, когда оно должно читать первое. В частности, когда я ввожу sideA как 5, sideB как 10 и angA как 30, выражение sideB * sin (angA) читается как 5. Однако по какой-то причине вместо того, чтобы выполнить это как "5 == 5, и, следовательно,первый оператор if должен быть запущен - выполняется содержимое «else if».
Менее вероятная причина этой проблемы, на мой взгляд, заключается в том, что я слишком консервативен с количеством цифр PI, которые я использую, и я должен увеличить его;более вероятная причина - предупреждение, которое я получаю: 1013 *
warning: comparing floating point with == or != is unsafe [-Wfloat-equal]
else if (sideA == sideB * sin(angA)) {
^
Я не имею ни малейшего понятия, как с этим бороться, и не могу понять, как подключиться к Интернету.