Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将十进制数保持在一定范围内_C++_Decimal_Angle - Fatal编程技术网

C++ 将十进制数保持在一定范围内

C++ 将十进制数保持在一定范围内,c++,decimal,angle,C++,Decimal,Angle,如果我有一个代表一个角度的十进制数,并将其添加到另一个角度,如何确保它保持在0°和359°之间?那么如果它是120°+270°,它将是30°,而不是390°?我可以检查它们是否高于或低于极限,然后加上或减去360°,但如果结果超过360°?我会使用模,但我不确定如何使用小数和负数。我也可以使用一个加/减360的循环,直到它在范围内,但我不确定这是否是一个好主意。(我实际上是用弧度来做的,用度来解释更容易)你可以使用模运算。对于整数,这是%运算符,可以使用浮点数 可以使用模运算。对于整数,这是%

如果我有一个代表一个角度的十进制数,并将其添加到另一个角度,如何确保它保持在0°和359°之间?那么如果它是120°+270°,它将是30°,而不是390°?我可以检查它们是否高于或低于极限,然后加上或减去360°,但如果结果超过360°?我会使用模,但我不确定如何使用小数和负数。我也可以使用一个加/减360的循环,直到它在范围内,但我不确定这是否是一个好主意。(我实际上是用弧度来做的,用度来解释更容易)

你可以使用模运算。对于整数,这是
%
运算符,可以使用浮点数


可以使用模运算。对于整数,这是
%
运算符,可以使用浮点数


fmod()
是在中声明的函数。不是接线员,好的。当我写并输入我的评论时,你没有提到
%
操作符。@Hop311顺便说一句,你可以将
2*PI
计算为
const double PI\u 2=std::atan(1.0)*8.0。您可以使用
PI_2
交换所有
360.0
,该函数将以弧度而不是度工作。
fmod()
是中声明的函数。不是接线员,好的。当我写并输入我的评论时,你没有提到
%
操作符。@Hop311顺便说一句,你可以将
2*PI
计算为
const double PI\u 2=std::atan(1.0)*8.0。您可以使用
PI_2
交换所有
360.0
,该函数将以弧度而不是度工作。
// \brief Calculates the sum of two angles
// \param[in]  a  First angle [degrees]
// \param[in]  b  Second angle [degrees]
// \return Sum of two angles [degrees, [0, 360)]
double AddAngles(double a, double b)
{
    const double totalAngle = a + b;
    if (totalAngle >= 0.0)
    {
        return std::fmod(totalAngle, 360.0);
    }
    else
    {
        return 360.0 - std::fmod(-totalAngle, 360.0);
    }
}
int main()
{
    std::cout << AddAngles(30.0, 450.0) << std::endl
              << AddAngles(50.0, 80.0) << std::endl
              << AddAngles(180.0, 180.0) << std::endl
              << AddAngles(-180.0, -270.0) << std::endl;
}
120
130
0
270