【问题标题】:How to convert an Integer or Float values into Degrees?如何将整数或浮点值转换为度数?
【发布时间】:2014-08-14 03:24:58
【问题描述】:

例如:

float AngleAddition(float value)
{
   float angle = value + 90;
   return angle;  
 }

如果传递给这个方法的值是 340,它应该返回一个值 70 的浮点数,以度为单位。因为 340 + 90 = 360 + 70(360 只不过是 0 度数)。

【问题讨论】:

  • 角的预期行为是什么?如果是 -180 + 90 会是什么结果?
  • @MarcGravell 的观点很重要,特别是对于模可能做一些意想不到的事情的负非整数类型。
  • 应该是-90,这正是我需要的!唯一的一点是,它不应大于 +360 或 -360
  • -360 到 +360 引入退化;例如,-90 与 +270 相同。你确定你需要这个吗?

标签: c# math trigonometry angle


【解决方案1】:

您应该对 360 值使用取模运算符。

public float AngleAddition(float angle, float value)
{
   return (angle + value)%360;  
}

模运算符应该适用于floatdouble,请记住数字表示的限制。有关案例研究,请参阅 this question

【讨论】:

  • 非常感谢,对我帮助很大
【解决方案2】:
private float AngleAddition(float value)
{
   return (value + 90) % 360;  
}

【讨论】:

  • 我也不确定,但是你有信心这适用于浮点类型吗?也不确定 90 的值,但这似乎是 OP 想要的。
  • @Bathsheba 刚刚使用提供的示例输入 OP 进行了测试,如果不将其转换为整数,它将起作用。 90 是 360 度的四分之一。这就是 OP 的要求。
  • 例如你应该验证360.1。
  • @Bathsheba 刚刚测试,它返回0.1000061。将其舍入为整数取决于 op 的需要。
  • 我只是理解这个问题。谢谢你说清楚。我会更新我的答案。