Точность и округление с помощью тригонометрических расчетов в Stack Overflow

Вычислить верхний левый угол ограничительной рамки повернутого прямоугольника (например, Рассчитать координаты ограничительной рамки из повернутого прямоугольника) Я пытаюсь действовать по-разному в зависимости от угла поворота (для определения квадрантов 0..90 ° ..180 ° ..270 ° ..360 °), указанных в градусах.
Угол конвертируется в радианы для сравнения с PI:

// http://codepad.org/zCxKJy30

#include <iostream>
#include "math.h"
using namespace std;

int main()
{
float deg = 90.0;
float rad = deg / 360.0 * 2.0 * M_PI;

if( rad <= M_PI/2.0)
{
cout << "less or equal";
}
else
{
cout << "larger";
}
return 0;
}

Я ожидаю, что условие будет истинным, но это не так.

Мне было интересно, если есть простое решение, в отличие от Как правильно вычислить округленные тригонометрические функции в градусах? а также Как я могу учесть ошибки округления в арифметике с плавающей точкой для обратных функций trig (и sqrt) (в C)? предложить.

Я просто попытался использовать тип double, и тогда сравнение работает, как и ожидалось: http://codepad.org/UHcee1RE

Почему повышение точности приводит к «правильной» оценке?

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]