计算旋转矩形的边界框的左上角(例如Calculate Bounding box coordinates from a rotated rectangle)我试图根据旋转角度采取不同的行动(确定象限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;
}
我希望条件是真的,但事实并非如此。
我想知道是否有一个简单的解决方案,与How to compute correctly rounded trigonometric functions in degrees?和How can I account for round-off errors in floating-point arithmetic for inverse trig (and sqrt) functions (in C)?不同。
我刚尝试使用double类型,然后比较按预期工作:http://codepad.org/UHcee1RE
为什么提高精度会导致“正确”评估?