使用C ++中的三角计算进行精确和舍入

时间:2014-09-18 08:10:03

标签: c++ precision trigonometry degrees

计算旋转矩形的边界框的左上角(例如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

为什么提高精度会导致“正确”评估?

0 个答案:

没有答案