获取图表轴的最后一个刻度

时间:2019-04-08 08:19:44

标签: c# .net algorithm

我已经计算出图表上某个轴的步进大小。

我还有最小值和最大值-

直到现在,我要迈出第一步:

            if (xValue >= 0)
            {
                this.myXValues.Add((((int)(xValue / stepSize)) * stepSize));
            }
            else
            {
                this.myXValues.Add((((int)((xValue - stepSize + 1) / stepSize)) * stepSize));
            }

现在我的问题是如何弄清楚最后一步是什么。 第一步,我需要像这样的算法。

编辑:示例:

给出值:

最大:320

步长:100

预期结果: 400

给出值:

最大:-470

步长:50

预期结果: -450

2 个答案:

答案 0 :(得分:1)

对于最后一个滴答声,您只需要稍微修改一下代码即可:

 if (xValue >= 0)
        {
            this.myXValues.Add((((int)((xValue + stepSize - 1) / stepSize)) * stepSize));
        }
        else
        {
            this.myXValues.Add((((int)(xValue / stepSize)) * stepSize));
        }

答案 1 :(得分:0)

这是通过遵循步长来获取介于最小值和最大值之间的数字的方法:

    static void Main(string[] args)
    {
        Console.WriteLine(string.Join(",", GetTicksBetweenNumbersBySteps(1000, 213, 4405)));
        Console.WriteLine(string.Join(",", GetTicksBetweenNumbersBySteps(500, -1213, 1405)));
    }

    private static List<int> GetTicksBetweenNumbersBySteps(int stepsize, int min, int max)
    {
        List<int> foundTicks = new List<int>() { 0 };

        int actualTick = 0;

        while (actualTick > min)
        {
            actualTick -= stepsize;

            if (actualTick >= min)
            {
                foundTicks.Add(actualTick);
            }
        }

        actualTick = 0;

        while (actualTick < max)
        {
            actualTick += stepsize;

            if (actualTick <= max)
            {
                foundTicks.Add(actualTick);
            }
        }

        return foundTicks.OrderBy(x => x).ToList();
    }

输出:

  

0,1000,2000,3000,4000

     

-1000,-500,0,500,1000