我需要能够比较 C 中 45 倍数的角度(始终以度为单位输入)。
我已经编写了基本角度 0,45,90,135,180... 的代码 但我也可以获得像 2070 这样的大角度,它与 90 相同。
我该怎么做? (抱歉,如果这是一个非常简单的问题,我只是开始讨论这个)
到目前为止,我已经尝试将角度转换为弧度并使用正弦函数。但问题是我无法使用 ==
运算符来比较它们。
这是迄今为止我学会比较 C 语言中的值的唯一方法
double direction;
scanf("%d", &direction);
int x = sin(direction * 0.0174533);
//Wanted to use the == operator, so I thought I'd assign the sin to an int.
if (x == 1) {
someInstruction();
}
问题是,当我将其转换为 int 时,该值变为 0 而不是 1。
最佳答案
如果您想比较角度,则无需计算角度的正弦值。实际上这会让你头疼,因为浮点值的精确相等有其自身的问题。我不会深入研究,如果您有兴趣,该研究可以作为练习留给您。
相反,我想向您介绍“modulo ”运算符。该运算符进行整数除法并返回余数。在 C 及其派生语言中,运算符是“%”。
因此,您让用户以整数形式输入角度并计算除以 360 的余数:int RM = input % 360;
示例:
input remainder
0 0
135 135
2070 270
3645 45
关于c - "Fixing"C中的大角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58461702/