c# - 设置一个零点,如果该值低于或高于此值,则显示为 -value 或 +value

标签 c# c#-4.0

我有 0 到 359 的输入(即指南针)。

我想设置一个零点,如果该值低于或高于此值,则显示为 -value 或 +value。

例子:

Zero Point: 2
Input: 340 => Output: -22
Input: 22 => Output: 20

Zero Point: 40
Input: 30 => Output: -10
Input: 50 => Output: 10

所以无论罗盘“在哪里”,输出总是相对于零点。

PS:或者更短:如何将 0->359 的重复序列转换为可以像处理普通数轴一样处理的线性序列?因此,如果 359 达到 2 次向上计数,函数会告诉我它是 720(我可能在这里错过了 1° 或 2° 的正确值)而不是 359?

最佳答案

假设你想要一个从 -179 到 180 的输出,零点可以从 0 到 359

int output(int deg, int zeropoint)
    {
        var relative = deg - zeropoint;
        if (relative > 180)
            relative -= 360;
        else if (relative < -179)
            relative += 360;
        return relative;
    }

关于c# - 设置一个零点,如果该值低于或高于此值,则显示为 -value 或 +value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16434451/

相关文章:

c# - 从头开始的模型- View - Controller 架构最佳实践

security - sAMAccountName 的 LDAP 标准是什么?

c# - 使用 protobuf-net 反序列化消息列表

javascript - 匹配数字并在替换之前添加

c# - Linq to SQL : If left hand side of a join condition equates to NULL, 抛出对象引用异常

xml - 如何阅读 Twitter 提要

c#-4.0 - 我们可以从 C# 中的最后一个文件夹中拆分文件路径吗?

c# - Thread.Join() 需要帮助

c# - Entity Framework POCO - 更新集合

c# - 在 ASP.NET Core 中设置策略时,JWT 身份验证返回 401